iOS 中的 static 、const 和 extern

staticconstextern 是在写 iOS 应用中常用的几个关键词。本篇文章将从以下几个方面介绍。


static

  • static 修饰的变量属于静态变量储存在 静态数据区 ,该区域中的变量在编译时就被分配内存,并且在 app 运行期间一直存在内存当中,直到 app 停止运行。所以被 static 修饰的变量在内存中只存有一份,并且在整个 app 运行期只被初始化一次
  • 用于对变量作用域的限制,限制变量只可在本文件中使用,但是不限制变量的读写(即可读写)。

const

  • const 修饰右边的变量为常量,即不可被修改(只读)。
const NSInteger a = 10; // a 不可被修改
NSInteger const a = 10; // 与上面效果一样
NSString const *str = @"hi"; // const 修饰的变量是 *str 所以可以修改 str 所指向的地址,不能修改 *str 具体的内容
NSString * const str = @"hi"; // const 修饰的变量是 str 所以可以修改 *str 具体的内容,不能修改 str 所指向的地址

extern

static 使得变量只对某个特定文件具有可见性,然而使用 extern 可以使得对所有文件可见

组合使用

申明全局常量

oc 中申明全局常量可以

//.h 文件
extern NSString * const kVAR;
//.m 文件
NSString * const kVAR = @"kVAR";

当然也可是使用宏来定义全局常量,但是建议用这种方法主要一下几点原因:

  • 使用宏的话无法知道常量的类型
  • 在调试的时候,宏使用不方便因为宏只是进行简单的替换。

静态常量

static 和 const可以使用 staticconst 定义只在局部作用的静态常量:比如 TableViewCell 的高度等

static const CGFloat kCellHeight = 12.;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅...
    大冲哥阅读 5,215评论 0 1
  • 一、const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏...
    Lucky丶晴阅读 1,384评论 0 1
  • Hello world,各位码神们,小白开发叉叉一鸡今天开始写人生中的第一篇技术文章,谢谢大家的支持。 今天我们来...
    拉布拉熊阅读 3,950评论 0 0
  • 目录 概念 命中测试 事件响应链条 功能 总结 <a name="概念"></a>概念 当你设计你的应用程序,很可...
    灯泡虫阅读 3,255评论 0 1
  • 04-02---早上老公一早起来去唤湘湘叫他起床,连喊了三次,都没反应,因为今天要带湘湘去工地,昨天他叔与他约...
    suhui440阅读 4,121评论 0 51