iOS巩基系列(二)——const、static、extern

const

  1. const用来修饰右边的基本变量或指针变量
  2. 被修饰的变量只读,不能被修改
/** 可以改变指针的指向 但是不能改变指针指向的内容 不能改变值*/
NSString * const kHomeBottomTitle1 = @"kHomeBottomTitle1"; 

/** 可以改变指针指向的内容 但是不能改变指针的指向 值可变*/ 
const NSString * kHomeBottomTitle2 = @"kHomeBottomTitle2"; 

/** 指针的指向 指针指向的内容都不可改变 不能改变值*/
const NSString * const kHomeBottomTitle3 = @"kHomeBottomTitle3";

static

  1. 修饰局部变量
    在方法体内,声明为静态的变量(局部静态变量)。保证局部变量永远只初始化一次,在程序的运行过程中永远只有一份内存,生命周期类似全局变量了,但是作用域不变。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{    
//声明一个局部变量i
static  int i = 0;    //每次点击view来到这个方法时让i自增
i ++;    //打印结果
NSLog(@"i=%d",i);
}
//i每次都会递增,因为只初始化一次
  1. 修饰全局变量
    在源文件内(但在方法体外),全局静态变量。变量的内存只被分配一次,使全局变量的作用域仅限于当前文件内部,即当前文件内部才能访问该全局变量。从面向对象的角度出发,当需要一个数据对象为整类而非某个对象服务,同时有力求不破坏类的封装性,既要求此成员隐藏在类的内部,又要求对外不可见的时候,就可以使用static。
@implementation LoginTool

//static修饰全局变量,让外界文件无法访问
static LoginTool *_sharedManager = nil;
+ (LoginTool *)sharedManager {
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
_sharedManager = [[self alloc] init];
});
return _sharedManager;
}
  1. 修饰函数(很少用到)
    static修饰函数时,被修饰的函数被称为静态函数,使得外部文件无法访问这个函数,仅本文件可以访问。

extern

  1. 声明外部全局变量。这里需要特别注意extern只能声明,不能用于实现。且仅仅是暗示这个变量可能是在别的源文件中定义过的,没有其他作用。
h中声明 
extern NSString * const  kHomeBottomTitle1;
.m中定义
NSString * const  kHomeBottomTitle1 = @"kHomeBottomTitle1";

注意:不可直接在.h文件中直接定义变量即:
extern NSString * const kHomeBottomTitle1 = @"kHomeBottomTitle1";
因为如果在.h里面定义,当全局变量被多个文件使用时,需要多次包含.h头文件,这样会导致重复定义这个全局变量

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

推荐阅读更多精彩内容

  • static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅...
    大冲哥阅读 5,219评论 0 1
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 10,461评论 0 13
  • const,static,extern简介一、const与宏的区别(面试题):const简介:之前常用的字符串常量...
    BinaryRo阅读 1,690评论 0 1
  • 一、const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏...
    Lucky丶晴阅读 1,397评论 0 1
  • 昨天制定的培训计划,今天开始实施。 上午首先是公司行政部门,向他介绍我们公司。从公司成立背景,到公司文化,再到公司...
    海伦Helen阅读 1,365评论 0 0