在.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/