在 iOS 和常规 OS X 开发之间切换时,我注意到两件事:
//SomeClass.h
@interface SomeClass: SomeUIClass
@property (retain)SomeProperty* someProperty;
@end
//SomeClass.m
@interface SomeClass ()
{
SomePrivateVar* somePrivateVar;
}
@end
@implementation SomeClass
@synthesize someProperty;
@end
以上将在iOS下编译得很好。那是:
- 我可以在公共 @interface 中不显式声明 ivar 的情况下合成属性
- 我可以在匿名类别(类扩展名)下的 .m 文件中进一步声明其他私有 ivars。
但是,如果为 OS X 编译并继承一些基于 NS 的类而不是基于 UI 的类(例如,NSView 而不是 UIView),上述两种情况都会导致编译器错误。
我想我认为 Objective-C 2. 通常允许上述内容,但它们只是 iOS 中的“快捷方式”?或者它们在 iOS 中被允许但在 OS X 中是怎么回事?