检查对象是否存在 - Objective C

问题描述 投票:0回答:3

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

谢谢!

ios objective-c object
3个回答
10
投票

假设你的对象引用设置为

nil
,如果没有对象,那么你可以使用

NSThing *myobj = nil;

if (!myobj)
    myobj = [[NSThing alloc] init];
[myobj message];

2
投票

取决于您的情况。您可以使用静态变量,即

- (void) doSomething
{
    static id foo = nil;
    if (! foo)
        foo = [[MyClass alloc] init];
    // Do something with foo.
}

第一次调用 -doSomething 时,MyClass 将被实例化。请注意,这不是线程安全的。

另一种方法是使用单例。可能更好的方法是在应用程序完成启动时实例化该对象,并将该对象传递给可能需要它的任何其他对象。


1
投票

使用GCD初始化某个实例的线程安全常用方法如下:

static dispatch_once_t once;
dispatch_once(&once, ^{
    obj = [NSSomeThing new];
});
© www.soinside.com 2019 - 2024. All rights reserved.