在.h文件中 -
@interface MyClass : NSObject {
@someAccessibilityModifier int a; // someAccessibilityModifier = @public, @private
}
或.m文件 -
@implementation MyClass {
@someAccessibilityModifier int a; // someAccessibilityModifier = @public, @private
}
上述两个方面的差异(因为两种方式,a
的可访问性和行为都是相同的)?
答案 0 :(得分:5)
在前者中,a
可在课堂外访问。如果您不希望这样做,则必须指定@private
。
在任何情况下,除非您明确希望您的ivar在课堂外可见(并且您几乎肯定不会),否则您应该使用后一种形式(在@implementation
中指定)。 Ivars通常被认为是实现细节,因此不应该在标题中。
唯一的例外是如果您正在编写32位OS X代码,因为它仍然使用脆弱的ABI,它要求在@interface
中声明所有ivars。