ошибка: ожидаемый идентификатор или '(' до 'public' - цель C - PullRequest
0 голосов
/ 11 мая 2011

Я получаю эту ошибку, когда объявляю переменную экземпляра как

@interface FOO : NSObject
{
 @public
  int a;
}
@public
-(id)init;
-(void)dealloc;
@end

ошибка: ожидаемый идентификатор или '(' до 'public'

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Вы не используете @public или другие ключевые слова доступа вне определения интерфейса, так как вы не объявляете публичные или приватные методы в Objective-C.

Пока вы предоставляете метод в заголовке / интерфейсе, он автоматически становится общедоступным извне класса. Если вы только добавляете реализацию, но не открываете ее в заголовке / интерфейсе (или выставляете ее только в расширении класса ), она является закрытой.

@interface FOO : NSObject
{
@public
    int a;
}

- (id)init;
- (void)dealloc;

@end

Теперь, почему вы захотите объявить общедоступную переменную int a экземпляра (вместо использования свойства) или явно объявить два метода, которые уже есть у NSObject, вне меня.

1 голос
/ 11 мая 2011

В блоке методов target-c не может содержаться блок @public (или @private) - он применим только к переменной экземпляра, и все методы в классах target-c являются открытыми, поэтому для исправления ошибки удалите 2nd @public из своего кода :

@interface FOO : NSObject
{
 @public
  int a;
}
-(id)init;
-(void)dealloc;
@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...