我想在 Cocoa 中有一个静态变量。
在查看了如何在 Objective-C 中声明类级属性?,我不清楚我迄今为止一直在做的事情是否有问题,即
// Foo.m
static NSString* id;
@interface Foo ()
代替
// Foo.h
@interface Foo {
}
+(NSString*) id;
// Foo.m
+(NSString*) id
{
static NSString* fooId = nil;
if (fooId == nil)
{
// create id
}
return fooId;
}
显然,第二种方法提供了初始化 id 的机会。但是,如果我在代码中的其他地方自己初始化 id,在里面,比如说一个 getter:
-(NSString*) getId
{
if (id==nil) {
id = ... // init goes here
}
return id;
}
那么与更复杂的类函数方法相比,简单的静态声明方法有什么问题吗?我错过了什么?