我正在使用Objective-c和cocoa api一段时间。但我不知道如果我将nil传递给参数,cocoa apis中的哪些方法会引发NSInvalidArgumentException。
如何获取所有方法都会引发NSInvalidArgumentException以及哪个参数不能为nil的列表。官方文件有时并不十分清楚,信息是分散的。
喜欢这种方法
NSData的-writeToURL:options:error:
我知道第一个参数不能为nil或者它会崩溃,但文档从不告诉我这些信息。我怎么知道所有Cocoa API中哪些方法不能接收nil参数并引发NSInvalidArgumentException。
答案 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的地方是错误参考参数:错误不应该被忽略。