YYModel里的一些细节

1、判断文件是否存在,再导入使用,避免文件不存在的情况;

[objc]  view plain  copy
  1. #if __has_include(<unistd.h>)  
  2. # include <unistd.h>  
  3. #elif __has_include(<io.h>)  
  4. # include <io.h>  
  5. #else  
  6. # error "Insane system"  
  7. #endif  
[objc]  view plain  copy
  1. #if __has_include(<YYModel/YYModel.h>)  
  2. FOUNDATION_EXPORT double YYModelVersionNumber;  
  3. FOUNDATION_EXPORT const unsigned char YYModelVersionString[];  
  4. #import <YYModel/NSObject+YYModel.h>  
  5. #import <YYModel/YYClassInfo.h>  
  6. #else  
  7. #import "NSObject+YYModel.h"  
  8. #import "YYClassInfo.h"  
  9. #endif  

2、FOUNDATION_EXPORT与#define 哪个来定义常量更好?

首先看看 苹果的定义 

NSObjCRuntime.h中的写法:

[objc]  view plain  copy
  1. #if defined(__cplusplus)  
  2. #define FOUNDATION_EXTERN extern "C"  
  3. #else  
  4. #define FOUNDATION_EXTERN extern  
  5. #endif  
  6.   
  7. #if TARGET_OS_WIN32  
  8.   
  9.     #if defined(NSBUILDINGFOUNDATION)  
  10.         #define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllexport)  
  11.     #else  
  12.         #define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllimport)  
  13.     #endif  
  14.   
  15.     #define FOUNDATION_IMPORT FOUNDATION_EXTERN __declspec(dllimport)  
  16.   
  17. #else  
  18.     #define FOUNDATION_EXPORT  FOUNDATION_EXTERN  
  19.     #define FOUNDATION_IMPORT FOUNDATION_EXTERN  
  20. #endif  



接下来继续,一般iOS我们定义常量的方法有两种,来看下面例子

我的.h文件

[objc]  view plain  copy
  1. FOUNDATION_EXPORT NSString * const kMyConstantString1;  
  2. FOUNDATION_EXTERN NSString * const kMyConstantString2;  

.m文件是这样定义的
[objc]  view plain  copy
  1. NSString * const kMyConstantString1 = @"123";  
  2. NSString * const kMyConstantString2 = @"456";  
[objc]  view plain  copy
  1. NSString *strTmp = @"456";  
  2. if(<span style="font-family: Arial, Helvetica, sans-serif;">strTmp</span><span style="font-family: Arial, Helvetica, sans-serif;"> == kMyConstantString1) {</span>  
  3.    //可以直接这样比较字符串指针地址,效率比  
  4.    //([stringInstance isEqualToString:MyFirstConstant])更高  
  5. }  
  6. NSLog(@"strTmp:%p,  kMyConstantString2:%p", strTmp, kMyConstantString2);  

打印结果:

[objc]  view plain  copy
  1. strTmp:0x103717248 kMyConstantString2:0x103717248  
可见strTmp与  kMyConstantString2  指向同一内存地址。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值