我使用 Objective-c 和 cocoa api 一段时间了。但我不知道如果我将 nil 传递给参数,cocoa apis 中的哪些方法会引发 NSInvalidArgumentException 。
如何获取所有方法都会引发 NSInvalidArgumentException 以及哪个参数不能为 nil 的列表。官方文件有时不太明确,信息分散。
喜欢这个方法
NSData's -writeToURL:options:error:
我知道第一个参数不能为nil,否则会崩溃,但文档从未告诉我该信息。我如何知道在所有 Cocoa API 中,哪些方法不能接收 nil 参数并且会引发 NSInvalidArgumentException。
最佳答案
您可以查看 Swift 声明。如果它不是可选的,则不允许使用nil
。如果它是常规可选 (?
),则明确允许 nil
。如果它是隐式解包的可选 (!
),那么您不知道。例如,对于您提到的方法 -[NSData writeToURL:options:error:]
,Swift 声明为:
func writeToURL(_ aURL: NSURL,
options mask: NSDataWritingOptions,
error errorPtr: NSErrorPointer) -> Bool
类型 NSURL
(而不是 NSURL?
或 NSURL!
)表示不允许使用 nil
。
关于objective-c - 哪些方法会引发 NSInvalidArgumentException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29415458/