哪些方法会引发 NSInvalidArgumentException?

Which methods will raise NSInvalidArgumentException?

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

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

喜欢这个方法

NSData's -writeToURL:options:error:

我知道第一个参数不能为nil否则会崩溃,但是文档从来没有告诉我那个信息。我怎么知道在所有 Cocoa 个 API 中,哪些方法不能接收 nil 参数并且会引发 NSInvalidArgumentException。

查看 Apple 文档中的方法,如果接受 nil 作为将指定的参数,否则它是必需的。

一个你不应该传递 nil 的地方,即使它会被接受是错误参考参数:错误不应该被忽略。

你可以看看Swift声明。如果它不是可选的,则不允许 nil。如果它是常规可选 (?),则明确允许 nil。如果它是一个隐式展开的可选(!),那么你不知道。例如,对于您提到的方法 -[NSData writeToURL:options:error:],Swift 声明是:

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

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