哪些方法会引发NSInvalidArgumentException?

时间:2015-04-02 14:28:01

标签: objective-c cocoa exception null

我正在使用Objective-c和cocoa api一段时间。但我不知道如果我将nil传递给参数,cocoa apis中的哪些方法会引发NSInvalidArgumentException。

如何获取所有方法都会引发NSInvalidArgumentException以及哪个参数不能为nil的列表。官方文件有时并不十分清楚,信息是分散的。

喜欢这种方法

  

NSData的-writeToURL:options:error:

我知道第一个参数不能为nil或者它会崩溃,但文档从不告诉我这些信息。我怎么知道所有Cocoa API中哪些方法不能接收nil参数并引发NSInvalidArgumentException。

2 个答案:

答案 0 :(得分:1)

您可以查看Swift声明。如果它不是可选的,则不允许nil。如果它是常规可选项(?),则明确允许nil。如果它是一个隐式解包的可选项(!),那么您就不知道了。例如,对于您引用的方法-[NSData writeToURL:options:error:],Swift声明为:

func writeToURL(_ aURL: NSURL,
          options mask: NSDataWritingOptions,
        error errorPtr: NSErrorPointer) -> Bool

NSURL类型(而不是NSURL?NSURL!)表示不允许nil

答案 1 :(得分:0)

请查看Apple文档中的方法,如果接受nil,则会指定参数,否则需要参考。

即使可以接受也不应传递nil的地方是错误参考参数:错误不应该被忽略。