代码快照
conf.d/local.ini
我想知道变量'sharedStore'如何能够将引用分配给自己,无论方法执行多少次。
似乎这样的变量是静态的但是在Java中这样的变量是临时的并且在退出方法时熄灭...更多的是,如果首先将sharedStore分配给nil然后设置为实例,那么为什么nil不能设置为下次进入方法时再次变量?如何将引用保留为方法变量?
答案 0 :(得分:2)
它实际上被视为static
变量是一个全局变量,因为它存储在堆中(或者可能是数据段;感谢@jlehr)而不是堆栈:< / p>
BNRItemStore*sharedStore=nil;
+(instancetype)sharedStore{
if(!sharedStore){
sharedStore=[[self alloc]initPrivate];
}
return sharedStore;
}
然而,只有在方法中才能看到它。
答案 1 :(得分:0)
static
关键字在C中意味着与在Java中完全不同。
在函数(方法)范围内,这意味着变量是持久的,这意味着即使在执行离开函数范围之后它也会保留其值。
在文件(编译单元)级别,它创建一个对文件中的所有代码可见的变量,但该变量对该文件是私有的。这意味着另一个声明同名静态变量的文件会创建第二个变量。