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

nonnull value as return value in method doesn't work?

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

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

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

Swift 使用这些标签来判断方法 return 是否是可选的。

nonnull 属性指定一些函数参数应该是 non-null 指针。这是编译器时间检查。

用法示例:

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