但我们创建一个类的时候,会生成如下的代码:
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface ViewController : UIViewController
@end
NS_ASSUME_NONNULL_END
可以看出我们写的代码实在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END的生命周期内的。
在这两个宏之间的代码,所有简单指针对象都被假定为nonnull,因此我们只需要指定那些nullable的指针。
我们可以看一下API的定义:
#ifndef NS_ASSUME_NONNULL_BEGIN
#define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
#endif
#ifndef NS_ASSUME_NONNULL_END
#define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
#endif
从定义中可以看到两个宏定义之间的代码默认是nonnull的。