【发布时间】:2012-10-04 17:54:41
【问题描述】:
我想在 Cocoa 中有一个静态变量。
看了How do I declare class-level properties in 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;
}
那么与更复杂的类函数方法相比,简单的静态声明方法有什么问题吗?我错过了什么?
【问题讨论】:
标签: cocoa class variables static