#objective-c #xcode #macos #accessor
#objective-c #xcode #macos #средство доступа
Вопрос:
Полный вопрос новичку. Я изучаю Objective-C по книге Кочана. Когда я пытаюсь создать следующий очень простой проект, я продолжаю получать
ошибка синтаксического анализа перед токеном ‘@’
имеется в виду @property int numerator, denominator;
оператор во фракции.файл h.
Вот фрагмент.файл h:
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
int numerator;
int denominator;
}
@property int numerator, denominator;
-(void) print;
-(void) setTo: (int) n over: (int) d;
-(double) convertToNum;
@end
Вот файл Fraction.m:
#import "Fraction.h"
@implementation Fraction
@synthesize numerator, denominator;
-(void) print
{
NSLog(@"%i/%i", numerator, denominator);
}
-(void) setTo: (int) n over: (int) d
{
numerator = n;
denominator = d;
}
-(double) convertToNum
{
if (denominator != 0)
return (double) numerator/denominator;
else
return 1.0;
}
@end
Любая помощь в понимании того, почему я получаю эту ошибку синтаксического анализа, очень ценится.
Комментарии:
1. Для меня это компилируется абсолютно нормально. Вы используете старую версию Xcode? Или вы компилируете для OS X 10.4?
2. Вы скопировали и вставили код с веб-сайта или PDF-файла или использовали исходный файл, который вы скачали из Интернета? У меня и раньше возникали проблемы с нестандартными символами «пробела», которые вводили компилятор в заблуждение.
3. Да, я использую «древнюю» версию: OS X 10.4.11 и XCode 2.5! В этом проблема?
4. Я не думаю, что
@property
это доступно на Tiger. Разве Obj-C не является Leopard 2.0 и выше?5. Отлично! Пожалуйста, найдите минутку, чтобы добавить это объяснение в качестве ответа и отметить его принятым, чтобы вопрос не отображался в результатах поиска как «Без ответа».
Ответ №1:
Я нашел это в Objective-C 2.0 (но, что интересно, не в книге Кочана): «Все приложения Objective-C, разработанные для Mac OS X, которые используют [вышеуказанные] улучшения для Objective-C 2.0, несовместимы со всеми операционными системами до версии 10.5 (Leopard)». Итак, мы нашли объяснение. Спасибо вам всем.
Ответ №2:
Привет, Scolfax добро пожаловать, похоже, ваша проблема в @property int числитель, знаменатель; и NSLog(@»%i /%i», числитель, знаменатель);