objective-c – 声明变量的方式之间的差异

我是Objective-C的新手,我无法理解MyClass.h中变量声明(firstString,secondString和thirdString)之间的区别是什么:

@interface MyClass {
    NSString *firstString;
}
@end

在MyClass.m中:

@interface MyClass() {
    NSString *secondString;
}
@end

@implementation MyClass

NSString *thirdString;

@end

我想第一个和第二个案例是相同的,但在什么情况下最好使用?

非常感谢!

最佳答案
三者之间没有功能差异,主要是能见度控制.

>第一个在您的类的公共头中声明,这意味着您希望程序员了解该变量.如果对此属性的访问受到限制(例如@private),则它不应再出现在公共标题中,您应该使用第二个或第四个选项.
>第二个是在类继续中声明的,这意味着只有实现才需要它.
>第三个是全局变量,只有在特殊情况下才应使用.
>缺少另一种选择

@implementation MyClass {
    NSString *thirdString; 
}

@end

(最新的Apple编译器允许)与2相同,无需创建类继续.

转载注明原文:objective-c – 声明变量的方式之间的差异 - 代码日志