【发布时间】:2012-04-04 23:58:40
【问题描述】:
在 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 下编译得很好。那就是:
- 我可以在不显式声明 ivar 的情况下合成属性 在公共@interface中
- 我可以在 .m 文件中进一步声明其他私有 ivars 匿名类别(类扩展)。
但是,如果为 OS X 编译并子类化一些基于 NS 的类而不是基于 UI 的类(例如,NSView 而不是 UIView),上述两种情况都会导致编译器错误。
我想我认为 Objective-C 2. 通常允许上述内容,但它们只是 iOS 中的“快捷方式”?或者它们在 iOS 中被允许但在 OS X 中是怎么回事?
【问题讨论】:
标签: cocoa-touch cocoa objective-c-2.0