检查对象是否存在 - 目标C

时间:2011-07-21 22:40:53

标签: objective-c object

有没有一种方法可以检查if语句中是否存在对象,而不是一遍又一遍地重新创建一个对象?

谢谢!

3 个答案:

答案 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];
});
相关问题