有许多Cocoa方法需要一个NSError对象作为方法的参数,但如果存在错误,它实际上是一种将错误对象返回给调用方法的方法。这个返回的对象是否保留?也就是说,在调用对象的代码(返回到错误的方法),也有需要是一些代码,如:我是否需要释放一个返回的NSError对象?
NSError *error;
[apiCall .... error:&error];
if (error){
[*error release];
}
我还没有看到任何地方这样,如果确实需要发布,这是做到这一点的方式?
我把[*错误代码]的原因是,你也可以指定NSError var为:NSError **错误;这是指向对象的一点。这有效吗? – casademora 2009-10-29 03:28:56
只有当它是“输出参数”或“输出参数”时,才指定'NSError **'作为'error'类型。在这种情况下,您会解除引用,但请注意'* error'将会有'NSError *'类型。您可以使用参数来解决功能只有一个返回值的事实。 Objc-C中的Out参数使用'Type **',因为参数是按值传递的。还要注意的是,如果'error'的类型为'NSError **',你必须用一个指向'NSError *'的指针(这是你在API调用中做的)或者分配一个指针来进行初始化,但有点奇怪。 – outis 2009-10-29 05:01:29
@outis如果它是自动发布的,则不会在调用方法中使用它不正确。因为实际创建NSError *并将其分配给out参数NSError **的方法的作用域已经在方法调用中完成,我们在调用方之后使用它。 – SayeedHussain 2013-08-22 10:12:30