FOUNDATION_EXPORT 延伸

Posted Jenaral

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FOUNDATION_EXPORT 延伸相关的知识,希望对你有一定的参考价值。

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

我的.h文件

1
2
FOUNDATION_EXPORT NSString * const kMyConstantString;  
FOUNDATION_EXPORT NSString * const kMyConstantString2;

.m文件是这样定义的

1
2
NSString * const kMyConstantString = @"Hello";
NSString * const kMyConstantString2 = @"World";

还有一种是常用的#define方法了

1
#define kMyConstantString @"Hello"

有什么区别呢?

使用第一种方法在检测字符串的值是否相等的时候更快.对于第一种你可以直接使用(stringInstance == MyFirstConstant)来比较,而define则使用的是这种.([stringInstance isEqualToString:MyFirstConstant])

哪个效率高,显而易见了.第一种直接比较的是指针地址,而第二个则是一一比较字符串的每一个字符是否相等.

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 在效率上前者由于是基于地址的判断 速度会更快一些

 

参考链接:

1.http://blog.csdn.net/hero118023/article/details/52755177

2.http://www.cocoachina.com/ios/20150210/11130.html

3.http://www.jianshu.com/users/b82d2721ba07/latest_articles

以上是关于FOUNDATION_EXPORT 延伸的主要内容,如果未能解决你的问题,请参考以下文章

html5怎么div无限延伸(好像叫不限高)

HTML5绘制3D线条延伸动画特效

Entitlements 延伸

为啥 CAShapeLayer 的笔触会延伸到框架之外?

二叉树遍历和延伸

CSS 导航栏底线向两边延伸动画