Objective c 目标C(通过参考)
我正在学习传递Objective c 目标C(通过参考),objective-c,nserror,Objective C,Nserror,我正在学习传递NSError指针,这本书谈到指针“成为”一个NSError的实例 我没有计算机科学的背景,但这似乎是错误的 指针是成为对象,还是指向实例化时发生的未来内存分配? 对象是否已初始化,指针是否仍保留在内存中 最后,当一个对象在NSError和我传递给该方法的指针的上下文中具体实例化时,会发生什么事情 这本书谈到指针“成为”一个n错误的实例 这是错误的。指针仍然是指针。但是,由于Objective-C中的所有对象都是通过指针引用的,NSError指针由双指针传递,即NSError**:
NSError
指针,这本书谈到指针“成为”一个NSError
的实例
我没有计算机科学的背景,但这似乎是错误的
指针是成为对象,还是指向实例化时发生的未来内存分配?对象是否已初始化,指针是否仍保留在内存中 最后,当一个对象在
NSError
和我传递给该方法的指针的上下文中具体实例化时,会发生什么事情
这本书谈到指针“成为”一个n错误的实例
这是错误的。指针仍然是指针。但是,由于Objective-C中的所有对象都是通过指针引用的,NSError
指针由双指针传递,即NSError**
:
-(void)checkError:(NSError**)errPtr {
if (errorCondition) {
*errPtr = [NSError errorWithDomain:... code:... userInfo:...];
}
}
当errorCondition
为true时进行此调用后
NSError *error = nil;
[self checkError:&error];
error
将引用新创建的NSError
对象,允许您将新实例传递回调用方。当一个方法调用可以返回多个对象时,这就很方便了。我制作了一个图表,希望能解释发生了什么。左边的框显示代码运行时程序变量包含的内容。右侧显示应用程序的伪代码。您可以看到如何将NSError引用返回给-doSomething:
的调用者
不确定如何将此图像显示得更大,但如果在浏览器中放大,则可以将其放大。通常,传递错误指针是可选的,因此如果(errorCondition&&errPtr){…}
@Droppy,则应该是这是一个缺少许多片段的概念说明。我相信OP会想出如何处理双指针以使其成为可选的。