1

在 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下编译得很好。那是:

  1. 我可以在公共 @interface 中不显式声明 ivar 的情况下合成属性
  2. 我可以在匿名类别(类扩展名)下的 .m 文件中进一步声明其他私有 ivars。

但是,如果为 OS X 编译并继承一些基于 NS 的类而不是基于 UI 的类(例如,NSView 而不是 UIView),上述两种情况都会导致编译器错误。

我想我认为 Objective-C 2. 通常允许上述内容,但它们只是 iOS 中的“快捷方式”?或者它们在 iOS 中被允许但在 OS X 中是怎么回事?

4

1 回答 1

2

这些是“现代运行时”的功能,只能用于 Mac OS X 上的 64 位应用程序。您可能正在构建一个还包括 32 位版本的通用二进制文件。

于 2012-04-05T00:13:54.580 回答