2013-02-12 81 views
2

在.h文件中 -Objective-C - 在.h或.m中保留变量 - 有什么区别?

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

或.m文件 -

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

在以上两种的任何差异(因为这两种方式,a的可及性和行为将是相同的)?

回答

5

在前者中,a以外的类可访问。如果你不希望那是真的,你必须指定@private

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

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

+0

谢谢。我更新了我的问题 – onlinenaman 2013-02-12 06:38:24

+1

@onlinenaman:辅助功能修饰符不代表'@ implementation'中的任何内容,因为该变量对其他类不可见。 – 2013-02-12 06:41:10

+0

@onlinenaman:另外,我的答案的第二段和第三段不依赖于辅助功能修饰符。 – 2013-02-12 06:41:30

相关问题