更新了Xcode 10之后在新建OC的类的时候,都会默认加上了NS_ASSUME_NONNULL_BEGIN
和NS_ASSUME_NONNULL_END
。
NS_ASSUME_NONNULL_BEGIN
@interface Person : NSObject
@end
NS_ASSUME_NONNULL_END
在Objective-C中,是没有像swift中!
和?
的概念,为了解决和swift混编的问题,增加了__nullable
和___nonnull
的关键字。 __nullable
代表修饰的对象可以为nil。
___nonnull
代表修饰的对象不可以为NULL或者为nil。
当我们给类中其中一个对象声明__nullable
或___nonnull
时候,需要把所有的对象都加上__nullable
或___nonnull
。
而NS_ASSUME_NONNULL_BEGIN
和NS_ASSUME_NONNULL_END
中间声明的对象会把所有对象默认当作是__nonnull
,而我们只需要可能为nil的对象声明为__nullable
就可以了。
请保持转载后文章内容的完整,以及文章出处。本人保留所有版权相关权利。