YYModel源码解析(一)YYModel.h

1._has_include()
以前自己从没用过 __has_include() 这个宏,其实从字面意义也能猜出其意:可否引入某个文件,它有一个参数,传入的就是想判断的文件名或路径,如果可以引入则返回1,反之则0.

2.FOUNDATION_EXPORT

首先看看 FOUNDATION_EXPORT 的定义:

#if defined(__cplusplus)
#define FOUNDATION_EXTERN extern "C"
#else
#define FOUNDATION_EXTERN extern
#endif

#if TARGET_OS_WIN32

    #if defined(NSBUILDINGFOUNDATION)
        #define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllexport)
    #else
        #define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllimport)
  #endif

    #define FOUNDATION_IMPORT FOUNDATION_EXTERN __declspec(dllimport)

#else
    #define FOUNDATION_EXPORT  FOUNDATION_EXTERN
    #define FOUNDATION_IMPORT FOUNDATION_EXTERN
#endif

可以看出FOUNDATION_EXPORT兼容了win32程序,而我们这里的使用可以把他当做FOUNDATION_EXTERN 就可以了,然后FOUNDATION_EXTERN是兼容了c/c++的,所以如果涉及到c/c++的宏和oc互相使用时,可以用FOUNDATION_EXTERN.

再就是FOUNDATION_EXPORT和 #define 的对比,一般用#define定义一个常量字符串如下:

#define TempString @“tempStr”

当做字符串比较时只能调用比较方法来实现比较:

[TempString isEqualToString:@"tempStr"];

但FOUNDATION_EXPORT可以直接用 ‘==’ 来进行直接比较:

FOUNDATION_EXPORT NSSting *TempString;

比较时:

TempString == @"tempStr";
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容