哪些方法会引发 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
。
我正在使用 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
。