我想到了声明私有变量的不同方法。我想知道它们之间是否有任何差异。
第一种方式:
//In .h file
@interface DataExtract : NSObject
{
@private
double test;
}
第二种方式:
//In .m file. test is not declared in .h file
static double test;
第三种方式:
//In .m file. test is not declared in .h file
double test;
任何帮助将非常感激。谢谢。
如果您想要 ivar,那么所有这些都不是一个好的解决方案。
我什至倾向于只在实现文件的类扩展中只使用一行自动生成的 ivars 属性(@synthesize 在 Objective-C 3.0 中自动生成)。
第一种方式:
是的,这是一个 ivar,但是您不应该在头文件中声明它,如果您将其声明为 @private,则使用 @implementation {...} 块。在实现块中你不需要声明它@private,因为它默认为@protected,但是在实现块中它对子类不可见
第二种方式:
这是一个仅在翻译单元中可见的变量,这里是 .m 文件本身。对于整个应用程序来说它不是全局的。该值对于类的每个实例都是持久的,因此它不是 ivar(实例变量)。
第三种方式:
那也不是ivar,它是一个默认为extern的变量,因为你没有写static。这意味着它位于全局符号表中,并且可以在其他翻译单元/文件中使用(如果它们 #import/#include .m 文件)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)