pragma

1.

#pragma clang diagnostic push

2.

NS_ASSUME_NONNULL_BEGIN
···
···
···
NS_ASSUME_NONNULL_END
/**
    成对出现,用于.h文件中 说明两者之间定义的属性 或者 方法 返回的都不为空
    即为 _Nonnull
    
    当我们用这个限制后想要某个属性或者方法可以为空时 可以添加 nullable
*/

3.

@protected 该类和所有子类中的方法可以直接访问这样的变量。
@private 该类中的方法可以访问,子类不可以访问。
@public 可以被所有的类访问
@package 本包内使用,跨包不可以

4.

__IPHONE_OS_VERSION_MAX_ALLOWED 这个宏得到的是当前开发环境的系统SDK版本,这个判断适用于那些第三方服务开发者,他们需兼容高低xcode版本保证最新的api跑在低版本的xcode上不会编译错误

__IPHONE_OS_VERSION_MIN_REQUIRED 这个宏它是当前项目选择的最低支持的版本