非空值作为方法中的返回值不起作用?

时间:2016-01-12 15:28:09

标签: ios objective-c nullable

我认为如果我在方法中为返回值指定nonnull属性,并尝试返回nil / null - 应用程序将崩溃,但我看到该应用程序没有崩溃,它成功返回null 。它的预期行为(Nullability只是为了与Swift的兼容性,对ObjC代码没有真正的帮助,或者我做错了什么? 我的方法声明返回null:

- (nonnull PFObject *)getParseObjFromManagObj:(nonnull NSManagedObject *)managObj;

2 个答案:

答案 0 :(得分:4)

Nullablity只是编译器的一个提示。如果您尝试返回null / nil,它应该使用警告标记您的代码,但它不会生成任何运行时代码。

Swift使用这些标记来判断方法是否返回可选项。

答案 1 :(得分:0)

nonnull属性指定某些函数参数应为非空指针。这是编译器时间检查。

使用示例:

extern void *my_memcpy(void *dest, const void *src, size_t len) __attribute__((nonnull (1, 2)));