常用宏: UNAVAILABLE_ATTRIBUTE , __has_include

__has_include

功能是检测到某个文件,是否在工程中被包含.

#if __has_include()
FOUNDATION_EXPORT double YYCacheVersionNumber;
FOUNDATION_EXPORT const unsigned char YYCacheVersionString[];
#import 
#import 
#import 
#elif __has_include()
#import 
#import 
#import 
#else
#import "YYMemoryCache.h"
#import "YYDiskCache.h"
#import "YYKVStorage.h"
#endif

NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_BEGIN

因为OC为了配合Swift的Option类型, 提供了__nullable__nonnull 指定指针类型是否为空

  • __nullable : 对象可以为nil
  • __nonnull : 对象不能为nil

当我们不遵循这一规则时,编译器就会给出警告。

给每个属性或方法一一指定的话很繁琐, 使用提供了 NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_BEGIN 简化工作量. 被两个宏包裹的代码, 所有简单指针对象都被假定为 __nonnull 即 不为nil, 如果可能为空的则再特殊指定.

NS_DESIGNATED_INITIALIZER

用来定义一些初始化方法只能过来这些标记的初始化

应该是配合Swift的指定构造函数

- (nullable instancetype)initWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER;

UNAVAILABLE_ATTRIBUTE

告知方法失效

- (instancetype)init UNAVAILABLE_ATTRIBUTE;
+ (instancetype)new UNAVAILABLE_ATTRIBUTE;

关键字 inline

内联关键字

你可能感兴趣的:(常用宏: UNAVAILABLE_ATTRIBUTE , __has_include)