码迷,mamicode.com
首页 > 其他好文 > 详细

YYModel 源码解读之YYModel.h (一)

时间:2016-05-21 17:19:32      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

#if __has_include(<YYModel/YYModel.h>)
FOUNDATION_EXPORT double YYModelVersionNumber;
FOUNDATION_EXPORT const unsigned char YYModelVersionString[];
#import <YYModel/NSObject+YYModel.h>
#import <YYModel/YYClassInfo.h>

#else
#import "NSObject+YYModel.h"
#import "YYClassInfo.h"
#endif

__has_include

此宏传入一个你想引入文件的名称作为参数,如果该文件能够被引入则返回1,否则返回0。

拓展:

#include / #import 语句有两种方式包含头文件,分别是使用双引号" "与左右尖括号< >。其区别是(对于不是使用完全文件路径名的)头文件的搜索顺序不同

使用双引号" "的头文件的搜索顺序:

  1. 包含该#include语句的源文件所在目录;
  2. 包含该#include语句的源文件的已经打开的头文件的逆序;
  3. 编译选项-I所指定的目录
  4. 环境变量INCLUDE所定义的目录

使用左右尖括号< >的头文件的搜索顺序:

  1. 编译选项-I所指定的目录
  2. 环境变量INCLUDE所定义的目录

再来介绍下 

FOUNDATION_EXPORT 是做什么的我们先看下NSObjCRuntime.h中的写法

#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 拓展了 C 的一些库

 


在ios开发中,

FOUNDATION_EXPORT 和#define 作用是一样的,使用第一种在检索字符串的时候可以用 ==  #define 需要使用isEqualToString 在效率上前者由于是基于地址的判断 速度会更快一些

YYModel 源码解读之YYModel.h (一)

标签:

原文地址:http://www.cnblogs.com/machao/p/5514921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!