someAccessibilityModifier

someAccessibilityModifier

在.h文件中-

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

或在.m文件中-
@implementation MyClass {
    @someAccessibilityModifier int a; // someAccessibilityModifier = @public, @private
}

上面两种方式有什么区别(由于两种方式,a的可访问性和行为都相同)?

最佳答案

在前者中,a在类外部可以访问。如果您不希望其为真,则必须指定@private

无论如何,除非您明确希望ivar在类之外可见(并且几乎肯定不会),否则应使用后一种形式(在@implementation中指定)。 Ivar通常被认为是实现细节,因此不应放在标头中。

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

关于iphone - Objective-C-将变量保留为.h或.m-有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14826659/

10-10 20:35