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