error:(NSError **)error
在苹果doc的。为什么两颗星?有什么意义?
解决方法 “双星”是指向指针的指针。所以NSError **是一个指向NSError类型的对象的指针。它基本上允许你从函数返回一个错误对象。你可以在你的函数中创建一个指向NSError对象的指针(调用它* myError),然后这样做:*error = myError;
以将该错误“返回”给调用者。
回复下面发表的评论:
你不能简单地使用NSError *,因为在C中,函数参数是通过值传递的,也就是说,传递给函数的值被复制。为了说明,考虑这个C代码片段:
voID f(int x){ x = 4;}voID g(voID){ int y = 10; f(y); printf("%d\n",y); // Will output "10"}
f()中的x的重新赋值不会影响f()之外的参数的值(例如,在g()中)。
同样,当指针传递给函数时,它的值被复制,重新赋值不会影响函数外的值。
voID f(int *x){ x = 10;}voID g(voID){ int y = 10; int *z = &y; printf("%p\n",z); // Will print the value of z,which is the address of y f(z); printf("%p\n",z); // The value of z has not changed!}
当然,我们知道我们可以相当容易地改变z指向的值:
voID f(int *x){ *x = 20;}voID g(voID){ int y = 10; int *z = &y; printf("%d\n",y); // Will print "10" f(z); printf("%d\n",y); // Will print "20"}
所以它的原因,为了改变一个NSError *指向的值,我们还必须传递一个指针指针。
总结以上是内存溢出为你收集整理的c – 什么是双星(例如NSError **)?全部内容,希望文章能够帮你解决c – 什么是双星(例如NSError **)?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)