цель c - @property с определением переменной, что должно произойти? - PullRequest
0 голосов
/ 30 апреля 2011

Допустим, у меня есть следующее определение объекта (обратите внимание на ошибку):

@interface User : NSObject {
    NSString* pid;
}

@property (nonatomic, retain) NSString* publicId;

@end

Заметили ошибку?Я определил pid, но написал publicId в свойстве.

Это не вызывает никаких ошибок компилятора (я использую XCode 4 для iOS) и фактически работает в большинстве случаев (я могу установить и получить публичный идентификатор, хотя этоне определено в объекте!).Если я попытаюсь представить, что делают @property и @synthesize, я не могу понять, как это не приводит к ошибкам компилятора!

Почему это работает?Есть идеи?

1 Ответ

3 голосов
/ 30 апреля 2011

В зависимости от целевой платформы, publicId поддерживается динамически генерируемой переменной экземпляра. pid не используется. (Это верно для 64-битной Mac OS X и для iOS; для 32-битной Mac OS X это должно компилироваться с предупреждениями или ошибками, указывающими на неполноту вашего класса.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...