在使用之前,如何确保对象已完成初始化?

Not*_*ley 3 oop initialization objective-c

在一个方法中编写一些Objective-C,我调用+alloc,然后-init设置一个对象.

object = [[MyClass alloc] init];
[object useFor:whatever];
Run Code Online (Sandbox Code Playgroud)

接下来的几行代码使用新创建的对象.如果前面提到的-init时间太长,我确定程序在开始使用新对象之前不会"等待",是吗?如果没有,是否有快速确保-init完成的方法?

我有时会看到编写程序的程序员

if(object = [[MyClass alloc] init]) {
    [object useFor:whatever];
}
Run Code Online (Sandbox Code Playgroud)

这是我应该去做的吗?

Abi*_*ern 9

当你调用init程序时,程序将不会继续到下一行,直到init方法返回.到达第二行时,init方法已完成.它可能没有成功完成,但它已经完成.

第二种形式是测试.首先if语句调用该init方法.如果返回有效对象,则测试为true,然后执行下一个语句.这就是为什么你看到init方法self在成功时和nil出现问题时返回的原因; 这样可以运行这些测试,以确保在继续之前已成功初始化对象.