Objective-C - 将变量保存在.h或.m - 任何差异?

时间:2013-02-12 06:21:52

标签: iphone ios objective-c

在.h文件中 -

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

或.m文件 -

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

上述两个方面的差异(因为两种方式,a的可访问性和行为都是相同的)?

1 个答案:

答案 0 :(得分:5)

在前者中,a 可在课堂外访问。如果您不希望这样做,则必须指定@private

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

唯一的例外是如果您正在编写32位OS X代码,因为它仍然使用脆弱的ABI,它要求在@interface中声明所有ivars。