【问题标题】:"error:NULL" or "error:nil"?“错误:NULL”还是“错误:无”?
【发布时间】:2011-10-13 02:38:27
【问题描述】:

只是想弄清楚最佳做法是什么:当使用采用(NSError**) 的方法时,发送nil 还是NULL 更好?

例如,

NSArray *items = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];

在文档中它说“如果您不想要错误信息,您可以为此参数指定 nil。”另一方面,由于它是双指针,NULL 似乎也有意义?

【问题讨论】:

    标签: objective-c null


    【解决方案1】:

    从技术上讲,NULL 是正确答案,而文档是错误的。

    在实践中,这并不重要。 NULLnil 在所有意图和目的上都是相同的。

    虽然这可能会改变并保持语言兼容,但如果不破坏大量内容,它就无法改变。

    不过,请随时提交错误。

    【讨论】:

    • 它们的类型不同。它们都为零,但“NULL”是一个 void *,“nil”是一个 id,“Nil”是一个类指针。 stackoverflow.com/questions/1564410/…
    • 是的;感谢您的链接。这就是为什么在这种情况下它应该为 NULL,因为 nil/Nil 既不代表指向类型指针的指针;它最终会变成 (voidid) 或类似的废话。
    • 谢谢大家。我担心的是,如果 NULL 在方法中以某种方式被取消引用,它不会引起问题吗?根据这篇文章 [stackoverflow.com/questions/3581544/…,nil 似乎是更安全的选择?
    • nilNULL 无关紧要;如果你取消引用,你会崩溃。因为它是(NSError**),它实际上类似于(NSError*void*),因此,NULL 确实是正确的选择。但是,同样,这在实践中并不重要。
    猜你喜欢
    • 2011-05-17
    • 1970-01-01
    • 2015-01-12
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多