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