美文网首页
YYCache.h宏解析

YYCache.h宏解析

作者: KnowWhy | 来源:发表于2017-05-20 21:31 被阅读0次

YYCache.h tips

#if __has_include()
#import #import #import #elif __has_include()
#import #import #import #else
#import "YYMemoryCache.h"
#import "YYDiskCache.h"
#import "YYKVStorage.h"
#endif

__has_include:用来检查Frameworks是否引入某个类。

像YYWebImage已经集成YYCache,如果导入过YYWebImage则无需重新导入YYCache。

NS_ASSUME_NONNULL_BEGIN
@interface YYCache : NSObject
...
- (nullable instancetype)initWithName:(NSString *)name;
...
@end
NS_ASSUME_NONNULL_END

接口中nullable的是少数,一般都为nonnull,为了防止写一大堆nonnullFoundation供了一对宏NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_END,包在里面的对象默认加nonnull修饰符,如果是nullable的,只需要把nullable的指出来就行。

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

command+鼠标左键UNAVAILABLE_ATTRIBUTE

发现宏定义#define UNAVAILABLE_ATTRIBUTE __attribute__((unavailable)),

attribute是Clang提供的一种源码注解,方便开发者向编译器表达某种要求,括号里是传达某种命令.

为方便使用,一些常用属性也被Cocoa定义成宏,

比如UNAVAILABLE_ATTRIBUTENS_CLASS_AVAILABLE_IOS(9_0).

unavailable告诉编译器该方法失效.

在封装单例或初始化某个类前必须做一些事时,对一些方法禁用是非常不错的选择.

还可以给个message提示:

+ (instancetype)alloc __attribute__((unavailable("alloc方法不可用,请用initWithName:")));
- (instancetype)init __attribute__((unavailable("init方法不可用,请用initWithName:")));
+ (instancetype)new __attribute__((unavailable("new方法不可用,请用initWithName:")));
- (instancetype)copy __attribute__((unavailable("copy方法不可用,请用initWithName:")));

相关文章

  • YYCache.h宏解析

    YYCache.h tips __has_include:用来检查Frameworks是否引入某个类。 像YYWe...

  • Linux内核__setup()宏介绍

    Linux内核中可使用宏__setup()处理内核的启动参数cmdline的解析。 一、宏解析 文件:includ...

  • OC宏解析

    NS_DESIGNATED_INITIALIZER // 指定的初始化方法 // 注解: 每个类可以有多个init...

  • Clang的理解及使用

    clang宏解析 在Xcode中经常使用宏定义,宏定义不仅使得代码简洁,同时提高代码的可读性。 但在集成环境中很少...

  • 宏函数

    使用宏函数优势 1、简化程序的编写 2、宏是由编译器解析和替换的,宏里面可以不用写类型 声明方式: #define...

  • 自动提示`宏`

    自动提示宏:能在输入宏的时候像属性一样让XCode有提示功能 解析 第一步:定义一个宏 define keyPat...

  • Linux源码解析——宏

    ①RLIMIT系列

  • 关于宏任务微任务的题

    第一道题: 解析:js任务队列有两种,宏任务队列,微任务队列。js的事件循环调度的就是宏任务队列。一个宏任务执行完...

  • GCD篇

    dispatch_semaphore(信号量) 语法解析 保持线程同步 为线程加锁 宏定义 dispatch_sy...

  • C/C++知识点分享(29)

    1.宏与内联函数的区别 解析:内联函数和宏都是在程序出现的地方展开,内联函数不是通过函数调用实现的,是在调用该函数...

网友评论

      本文标题:YYCache.h宏解析

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