下面的代碼是從用來說明如何寫一個字符串到文件「的的iOS 5開發者的食譜」拍攝。它利用__autoreleasing沒有任何解釋。爲什麼有必要?使用代碼__autoreleasing的片斷例如
NSError __autoreleasing error;
...
if (![myString writeToFile:path atomically:YES error:&error)
{
NSLog(.... error.localizedFailureReason ...);
return;
}
爲什麼不直接在堆棧上聲明錯誤而不使用__autoreleasing?
------ -----編輯
另一個問題:爲什麼作者聲明NSError而不是NSError *?
大多數時候NSError被聲明爲NSError *錯誤。但在這種情況下,它的NSError錯誤。即在wrieToFile之前創建NSError:這是否會產生後果? – Gruntcakes 2012-02-29 16:28:22
我實際上用'NSError * error'提交了一個編輯到你原來的問題。我認爲這一定是本書中的一個錯字:Obj-C對象總是用指針引用,所以'NSError error'會給編譯時錯誤。 – gregheo 2012-02-29 17:05:17
恐怕這個答案是不正確的。它不是「提示」,而是語義的聲明 - *提示*可以忽略,*語義*不可以。另外,存儲的引用不需要對自動釋放的對象進行存儲。請參閱[這個問題](http://stackoverflow.com/questions/8814718/handling-pointer-to-pointer-ownership-issues-in-arc)瞭解更多的背景知識。 – CRD 2014-04-22 18:54:06