有許多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