在.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 通常被认为是实现细节,因此不应出现在 header 中。
唯一的异常(exception)是如果您正在编写 32 位 OS X 代码,因为它仍然使用脆弱的 ABI,需要在 @interface
中声明所有 ivars。
关于iphone - Objective-C - 将变量保留在 .h 或 .m 中 - 有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14826659/