美文网首页
iOS常用宏记录收集

iOS常用宏记录收集

作者: 一束强光 | 来源:发表于2018-08-21 16:44 被阅读0次

    序号 作用
    1 TARGET_IPHONE_SIMULATOR 判断是否是模拟器
    2 NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END 中间的都不能为空
    3 NS_DESIGNED_INITIALIZER 其他的初始化方法都必须要调用此方法
    4 NS_UNAVAILABLE 禁用修饰的初始化方法
    5 if __has_include 通过宏定义判断是否引入的是framework,反之则使用双引号
    6 FOUNDATION_EXPORT 定义常量,类似Define
    1、TARGET_IPHONE_SIMULATOR 判断是否是模拟器
    #ifdef TARGET_IPHONE_SIMULATOR
    
    XXXXX  模拟器时会编译的代码
    
    #else
    
    XXXXX  不是模拟器才会编译的代码
    
    #endif
    
    2、NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END 中间的都不能为空

    __nullable && ___nonnull
    __nullable指代对象可以为NULL或者为NIL
    __nonnull指代对象不能为null
    当我们不遵循这一规则时,编译器就会给出警告。

    在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END中间修饰的属性都不能为空

    参考链接:https://www.jianshu.com/p/b3a31eed945f

    3、NS_DESIGNED_INITIALIZER 其他的初始化方法都必须要调用此方法进行最后的初始化 init方法调用顺序

    参考链接:https://www.jianshu.com/p/5654942cd8f7

    4、NS_UNAVAILABLE 禁用修饰的初始化方法

    在初始化必须传入某个参数化的时候,修饰其他的初始化方法

    + (instancetype)new NS_UNAVAILABLE;
    - (instancetype)init NS_UNAVAILABLE; ///< 直接标记 init 方法不可用
    - (instancetype)initWithUserID:(NSNumber *)userID;/// 相当于只能用此方法来初始化
    

    参考链接:https://www.jianshu.com/p/5654942cd8f7

    5、if __has_include 通过宏定义判断是否引入的是framework,反之则使用双引号
    #if __has_include(<TestHead/TestHead.h>)
          #import <TestHead/TestHead.h>
    #else
          #import "TestHead.h"
    #endif
    
    6、FOUNDATION_EXPORT 定义常量

    .h文件

    FOUNDATION_EXPORT  NSString *const kMyConstantString;
    

    .m文件是这样定义的

     NSString *const kMyConstantString = @"hello world";
    

    另一种就是常用的#define 方法定义常量了

    #define kMyConstantString @"Hello"
    

    相关文章

      网友评论

          本文标题:iOS常用宏记录收集

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