目标c - 具有变量定义的@property,会发生什么?

时间:2011-04-30 18:46:47

标签: objective-c variables properties

让我说我有以下对象定义(注意错误):

@interface User : NSObject {
    NSString* pid;
}

@property (nonatomic, retain) NSString* publicId;

@end

注意错误?我定义了pid,但在属性下写了publicId。

这不会导致任何编译器错误(我在iOS上使用XCode 4)并且实际上似乎在大多数情况下都可以工作(我可以设置并获取公共Id,尽管它没有在对象中定义!)。如果我试着想象@property和@synthesize做了什么,我似乎无法知道这怎么不会造成编译错误!

为什么这似乎有效?有什么想法吗?

1 个答案:

答案 0 :(得分:3)

根据您要定位的平台,publicId由动态生成的实例变量支持。未使用pid。 (这适用于64位Mac OS X和iOS;对于32位Mac OS X,这应该编译时会显示警告或错误,表明您的课程不完整。)