美文网首页
常用系统宏: UNAVAILABLE_ATTRIBUTE , _

常用系统宏: UNAVAILABLE_ATTRIBUTE , _

作者: 心存暖人_iOS | 来源:发表于2019-05-17 13:07 被阅读0次

__has_include

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

#if __has_include(<YYCache/YYCache.h>)
FOUNDATION_EXPORT double YYCacheVersionNumber;
FOUNDATION_EXPORT const unsigned char YYCacheVersionString[];
#import <YYCache/YYMemoryCache.h>
#import <YYCache/YYDiskCache.h>
#import <YYCache/YYKVStorage.h>
#elif __has_include(<YYWebImage/YYCache.h>)
#import <YYWebImage/YYMemoryCache.h>
#import <YYWebImage/YYDiskCache.h>
#import <YYWebImage/YYKVStorage.h>
#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;

原文链接

相关文章

网友评论

      本文标题:常用系统宏: UNAVAILABLE_ATTRIBUTE , _

      本文链接:https://www.haomeiwen.com/subject/piwnaqtx.html