美文网首页iOS面试专题
iOS 宏定义与constant 的使用

iOS 宏定义与constant 的使用

作者: 俊俊吖 | 来源:发表于2017-01-19 15:49 被阅读0次

    一。在iOS中,经常使用宏定义,或者使用constant 修饰一些数据类型,要正确区分他们的使用不要在项目中乱用

    1.当我们想全局共用一些数据是,可以使用宏,变量,常量

    宏:

    #define  JJHeader @"俊俊"

    变量:

    NSString *JJHeader = @"俊俊";

    常量区分:

    1)全局常量:不管你定义在任何文件夹,外部都能访问

    constant NSString *JJCoder = @"俊俊不是丑女";

    举个例子:

    你在某一个控制器里定义了字符串全局常量  JJCoder

    constant NSString *JJCoder = @"俊俊不是丑女";

    extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。

    然后在工程其他任何地方都能找到这个常量(在其他地方找的时候要使用extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。必须和全局常量同名)

    extern NSString*JJCoder;

    2)局部常量:用static修饰后,不能提供外界访问

    加上static 之后。

    static const NSString*JJCoder =@"俊俊不是丑女";

    在其他控制器里此时运行一下就会报错,

    3)constant 修饰的位置不同,代表什么含义

    1.constant NSString *JJcoder = @"俊俊不是丑女";

    *JJcoder 不能被修改,JJcoder能被修改

    2.NSString constant *JJcoder = @"俊俊不是丑女";

    *JJcoder不能被修改,JJcoder 可以被修改

    结论:const右边的总不能被修改

    举个例子:

    const int*p =NULL;

    inta =20;

    intb =30;

    p = &a;

    *p =20;

    int const *p =NULL;

    inta =20;

    intb =60;

    p = &a;

    *p =80;

    *p不能改,与上面的错误一样

    int*constp =NULL;

    inta =30;

    intb =60;

    p = &a;

    *p =50;

    p 不能被修改

    二。怎么在工程当中使用到这样的全局常量

    举个例子:

    比如在工程当中用到一些通知通知的名字不可修改

    一般项目中,定义全局常量,会写在独立文件里

    比如pch 或者 其他文件(单独放项目常量的文件)

    在.m 文件里(在 FindViewController)里

    在.h 里面暴露出来

    在需要这些值得地方引入这两个值的.h 

    #import"AppDelegate.h"

    #import"RootFirstViewController.h"

    #import"FindViewController.h"

    在APPDElegate里面输出这两个值

    相关文章

      网友评论

        本文标题:iOS 宏定义与constant 的使用

        本文链接:https://www.haomeiwen.com/subject/ebfibttx.html