iOS

NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END

iOS,Xcode 10

Posted by Karim on September 20, 2018

更新了Xcode 10之后在新建OC的类的时候,都会默认加上了NS_ASSUME_NONNULL_BEGINNS_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_BEGINNS_ASSUME_NONNULL_END中间声明的对象会把所有对象默认当作是__nonnull,而我们只需要可能为nil的对象声明为__nullable就可以了。


请保持转载后文章内容的完整,以及文章出处。本人保留所有版权相关权利。

分享到: