有没有一种方法可以检查if语句中是否存在对象,而不是一遍又一遍地重新创建一个对象?
谢谢!
答案 0 :(得分:9)
假设您的对象引用设置为nil
,如果没有对象,则可以使用
NSThing *myobj = nil;
if (!myobj)
myobj = [[NSThing alloc] init];
[myobj message];
答案 1 :(得分:2)
取决于你的情况。您可以使用静态变量,即
- (void) doSomething
{
static id foo = nil;
if (! foo)
foo = [[MyClass alloc] init];
// Do something with foo.
}
第一次调用-doSomething时,MyClass将被实例化。请注意,这不是线程安全的。
另一种方法是使用单身人士。可能更好的方法是在应用程序完成启动时实例化对象,并将对象传递给可能需要它的任何其他对象。
答案 2 :(得分:1)
使用GCD初始化某个实例的线程安全常用方法如下:
static dispatch_once_t once;
dispatch_once(&once, ^{
obj = [NSSomeThing new];
});