下面的代码是从用来说明如何写一个字符串到文件“的的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