NSParameterAssert
NSParameterAssert故名思义,用于检测参数,是一个封装了NSAssert的宏,定义如下:
1 | #define NSParameterAssert(condition) NSAssert((condition), @"Invalid parameter not satisfying: %@", @#condition) |
code
1 |
|
NSAssert
当然也可以用 NSAssert
,通过条件表达式来断定是否属于Bug,满足条件返回真值
,程序继续运行;如果返回假值
,则抛出异常,并且可以自定义异常描述。
code
1 | int a = 1; |
__has_include
用来检查Frameworks是否引入某个类,
如YYWebImage已经集成YYCache,如果导入过YYWebImage则无需重新导入YYCache
code
1 | #if __has_include(<YYCache/YYCache.h>) |
NS_ASSUME_NONNULL_BEGIN/NS_ASSUME_NONNULL_END
接口中 nullable 的是少数,一般都为nonnull,为了防止写一大堆 nonnull,Foundation供了一对宏NS_ASSUME_NONNULL_BEGIN、NS_ASSUME_NONNULL_END,包在里面的对象默认加 nonnull 修饰符,如果是nullable的,只需要把 nullable 的指出来就行
code
1 | NS_ASSUME_NONNULL_BEGIN |
UNAVAILABLE_ATTRIBUTE
unavailable告诉编译器该方法失效.
在封装单例或初始化某个类前必须做一些事时,对一些方法禁用是非常不错的选择.
如果需要,还可以使用 __attribute__((unavailable("your tips")));
这个宏来给出具体的提示
code
1 | - (instancetype)init UNAVAILABLE_ATTRIBUTE; |