iOS 关键字const/static/extern、UIKIT_EXTERN区别和用法

1const

1const用来修饰右边的基本变量或指针变量

2)被修饰的变量只读,不能被修改


const的常用用法:

//定义一个全局只读变量

NSString  * const Kname = @"appkey";


//static修饰后此全局变量只能本文件访问

static NSString *const Key = @"hddjj”;


2static


1)修饰局部变量

保证局部变量永远只初始化一次,在程序的运行过程中永远只有一份内存,  生命周期类似全局变量了,但是作用域不变。

2)修饰全局变量

使全局变量的作用域仅限于当前文件内部,即当前文件内部才能访问该全局变量。

iOS中在一个文件声明的全局变量,工程的其他文件也是能访问的,但是我又不想让其他文件访问,这时就可以用static修饰它了,比较典型的是使用GCD一次性函数创建的单例,全局变量基本上都会用static修饰。




3extern

作用是声明外部全局变量。这里需要特别注意extern只能声明,不能用于实现,而且定义和分配内存都在原来类中。




4UIKIT_EXTERN


如果多个.m文件需要用到myURL,可以在每一个.m文件都像下面这样初始化吗?

NSString * const myURL = @"http://xxx.xxx.xxx.xxx:8090";

肯定不行,编译时,会报重复定义.比如在pch文件中写上面这行代码,就相当于为每一个.m文件都写这行代码

要解决重复定义的问题,可以参照苹果的做法,比如系统预置的通知

UIKIT_EXTERN NSString *const UIKeyboardWillShowNotification;

UIKIT_EXTERN NSString *const UIKeyboardDidShowNotification;

UIKIT_EXTERN NSString *const UIKeyboardWillHideNotification;

UIKIT_EXTERN NSString *const UIKeyboardDidHideNotification;// UIKIT_EXTERN,是经过处理的extern


转载自

https://www.jianshu.com/p/89656ccfe464

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值