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 延伸的更多相关文章
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- 《高性能javascript》一书要点和延伸(下)
第六章 快速响应的用户界面 本章开篇介绍了浏览器UI线程的概念,我也突然想到一个小例子,这是写css3动画的朋友都经常会碰到的一个问题: <head> <meta charset=& ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 【NLP】条件随机场知识扩展延伸(五)
条件随机场知识扩展延伸 作者:白宁超 2016年8月3日19:47:55 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有应 ...
- iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)
<分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...
- 转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案
转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案 近乎(英文:Spacebuilder),作为.net领域的SNS社区建站系统代表之一,一直在技术开发领域算是兢兢业业,在Discuz!和Php ...
- json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸
我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容 ...
- 元素设置position:fixed属性后IE下宽度无法100%延伸
元素设置position:fixed属性后IE下宽度无法100%延伸 IE bug 出现条件: 1.div1设置position:fixed属性,并且想要width:100%的效果. 2.div2(下 ...
随机推荐
- WebView 实现MiniBrowser
package org.hjw.minibrowser; import android.os.Bundle; import android.app.Activity; import android.v ...
- Android 架构艺术之MVP
MVP是Google官方发布的Android开发相关的架构知识.本文要讲解的是一种最基本的MVP的实现方式,它使用手动的依赖注入来提供具有本地和远程数据源的存储库.异步任务处理回调. 基本的MVP的项 ...
- ios 获取融云token
聊聊iOS做融云时重要的一步,获取token.token应该从服务端拿这样你的appSecret就不容易暴露.但有时开发需要也要自己先获取一个token也是可以的.请求方式有很多随你便喽,C哥(&qu ...
- tampermonkey,采用js解析自定义脚本,实现网页列表数据采集分析
最近一直在做数据采集的事情,目的是使用java开发一套分析指定采集规则,模拟用户动作做数据提取.因此定义了一套动作脚本,open,click,get,list,opentab,closetab...j ...
- .NET中的类库
1.object类 所有类都继承于object类,是顶级父类,他有以下成员,都是虚方法: a) ToString() 默认输出对象所属类的全名称(命名空间.类名) b) Equals (O ...
- C语言之printf函数
一 基本用法 格式化控制符:%d %c %ld %lf 意思是:相当于在要输出的语句里面挖了一个坑,也就是在内存中开辟空间,然后再那个坑的位置(也就是开辟好的空间),填上你想要显示的值 printf ...
- 背水一战 Windows 10 (39) - 控件(布局类): VariableSizedWrapGrid, Border, Viewbox, SplitView
[源码下载] 背水一战 Windows 10 (39) - 控件(布局类): VariableSizedWrapGrid, Border, Viewbox, SplitView 作者:webabcd ...
- js Checkbox 传递多个值给后台
------前台JS "<input class=\'jTabCheck2\' type=\'checkbox\' partvguid=" + obj + " pr ...
- 数据结构之Binary Search Tree (Java)
二叉查找树简介 二叉查找树(Binary Search Tree), 也成二叉搜索树.有序二叉树(ordered binary tree).排序二叉树(sorted binary tree), 是指一 ...
- Android学习笔记(三)Android开发环境的搭建
一.配置JAVA环境 二.配置Android开发环境 可以安装adt-bundle-windows,该压缩包一般自带Eclipse.或者安装Android Studio,要注意SDK的版本是否符合要求 ...