iOS-Null passed to a callee that requires a non-null argument

今天将一个ID字段置为nil,这时报错如下:

Null passed to a callee that requires a non-null argument

此警告就是某属性说好的不能为空,你又在某地方写了ID = nil 所以冲突了。

你在声明一个属性的时候加上 __nullable(?可以为空)与__nonnull(!不能为空) 如果放在@property里面的话不用写下划线

设置不能为空:

@property (nonatomic, strong) NSNumber * __nonnull ID;

设置可以为空:

@property (nonatomic, strong) NSNumber *__nullable ID;

或者用宏NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END 包住多个属性全部具备nonnull,然后仅对需要nullable的改下就行,有点类似于f-no-objc-arc那种先整体给个路线在单独改个别文件的思想。

​
NS_ASSUME_NONNULL_BEGIN

@property (nonatomic, strong) NSNumber *ID;

NS_ASSUME_NONNULL_END

​

 

上一篇:C++练习 | 二分练习


下一篇:特殊计数序列——第一类斯特林(stirling)数