iphone - Objective-C - 将变量保留在 .h 或 .m 中 - 有什么区别吗?

标签 iphone ios objective-c

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

相关文章:

objective-c - 有没有办法知道哪个 Collection View 单元格在特定点?

ios - 如何访问 iOS 中的设置

iphone - 由于 'objc_getClassList returned more classes than it should have.',运行单元测试时应用程序崩溃

ios - 将 JSON 中的 "sex = 0"转换为 BOOL

ios - 从核心数据中获取对象数组

objective-c - Objective C 对象的 C 数组

ios - 如果两个 iBeacon 靠得很近,一个信号能否在传输到设备 (iPhone) 时覆盖另一个信号

iphone - 音频文件不在 iPhone/iOS 中播放

IOS 项目在 xcode 7.1 上显示错误 "An internal error occurred. Editing functionality may be limited"

ios - 如何动态更改分段控件中标签中的值? swift 4、iOS