美文网首页
常用系统宏: 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