2

在 .h 文件中 -

@interface MyClass : NSObject {
    @someAccessibilityModifier int a; // someAccessibilityModifier = @public, @private
}

或在 .m 文件中 -

@implementation MyClass {
    @someAccessibilityModifier int a; // someAccessibilityModifier = @public, @private
}

以上两者有什么区别(因为两种方式,a' 的可访问性和行为将相同)?

4

1 回答 1

5

在前者中,a 在课堂外访问。@private如果您不希望这是真的,您必须指定。

在任何情况下,除非您明确希望您的 ivar 在课堂外可见(而且您几乎肯定不会),否则您应该使用后一种形式(在 中指定@implementation)。Ivar 通常被认为是实现细节,因此不应出现在标题中。

唯一的例外是如果您正在编写 32 位 OS X 代码,因为它仍然使用脆弱的 ABI,它需要在@interface.

于 2013-02-12T06:25:12.337 回答