这个概念似乎让我很困扰。为什么 NSError 对象需要将其指针传递给正在修改对象的方法?例如,不只是传递一个对错误的引用做同样的事情吗?
NSError *anError;
[myObjc doStuff:withAnotherObj error:error];
然后在doStuff中:
- (void)doStuff:(id)withAnotherObjc error:(NSError *)error
{
// something went bad!
[error doSomethingToTheObject];
}
为什么上述工作不像大多数其他对象消息传递模式那样工作?为什么我们必须使用 error:(NSError **)error?
最佳答案
很简单:
如果你将一个指向对象的指针传递给你的函数,函数只能修改指针所指向的内容。
如果你传递一个指向一个对象的指针,那么函数可以修改指针以指向另一个对象。
在 NSError 的情况下,该函数可能想要创建一个新的 NSError 对象并将一个指向该 NSError 对象的指针传回给您。因此,您需要双重间接,以便可以修改指针。
https://stackoverflow.com/questions/903103/