我知道我可以返回该参数不能被NSError定义或抛出NSException,但是告知该参数的最佳选择是什么,在objective-c中不能为零?
答案 0 :(得分:1)
文档。
在开发过程中使用断言来引发异常。
也返回一个NSError
(虽然在你开始制作时它应该永远不会发生。)
答案 1 :(得分:0)
您可以使用NSAssert()
,这只会在未定义NS_BLOCK_ASSERTIONS
的版本中触发:
- (void)someMethodWithParam:(id)someParam {
NSAssert(someParam, @"someParam cannot be nil");
...
}
这几乎会限制对您和其他开发人员的检查,但如果您希望它继续存在,无论构建如何,那么NSException
最好:
- (void)someMethodWithParam:(id)someParam {
if (!someParam) {
[NSException raise:@"MyException" format:@"someParam cannot be nil"];
}
...
}
答案 2 :(得分:0)
要在编译时检查,请使用
__attribute__ with nonnull
示例,第一个和第二个参数不应为null:
extern void * my_memcpy (void *dest, const void *src, size_t len)
__attribute__((nonnull (1, 2)));
nonnull属性指定一些函数参数应该 是非空指针。使用nonnull编码对值的期望 进入一个显式契约,它可以帮助捕获任何NULL指针错误 潜伏在任何调用代码中。记住:编译时错误»运行时 错误。
了解更多here