在Objective-c中我应该用什么来返回那个参数不能为零?

时间:2014-04-30 11:13:19

标签: ios objective-c null nserror nsexception

我知道我可以返回该参数不能被NSError定义或抛出NSException,但是告知该参数的最佳选择是什么,在objective-c中不能为零?

3 个答案:

答案 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