让我说我有以下对象定义(注意错误):
@interface User : NSObject {
NSString* pid;
}
@property (nonatomic, retain) NSString* publicId;
@end
注意错误?我定义了pid,但在属性下写了publicId。
这不会导致任何编译器错误(我在iOS上使用XCode 4)并且实际上似乎在大多数情况下都可以工作(我可以设置并获取公共Id,尽管它没有在对象中定义!)。如果我试着想象@property和@synthesize做了什么,我似乎无法知道这怎么不会造成编译错误!
为什么这似乎有效?有什么想法吗?
答案 0 :(得分:3)
根据您要定位的平台,publicId
由动态生成的实例变量支持。未使用pid
。 (这适用于64位Mac OS X和iOS;对于32位Mac OS X,这应该编译时会显示警告或错误,表明您的课程不完整。)