1.NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END用法

但我们创建一个类的时候,会生成如下的代码:

#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的。

猜你喜欢

转载自blog.csdn.net/ZCC361571217/article/details/122718769