• 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

  • 相关阅读:
    vue+drf+第三方滑动验证码的接入实现
    基于k8s Ingress Nginx+OAuth2+Gitlab无代码侵入实现自定义服务的外部验证
    [转] Java 命名规范
    npm 下载慢问题解決方案
    java float跟double类型区别
    select、input为什么不能使用after before
    es6数组方法详解
    pytest-pytest.main()运行测试用例,pytest参数
    Selenium截屏 图片未加载的问题解决--【懒加载】
    selenium元素定位中的iframe切换问题总结
  • 原文地址:https://www.cnblogs.com/Jenaral/p/6170137.html
Copyright © 2020-2023  润新知