iOS定义静态变量、静态常量、全局变量
2023-09-11 14:17:57 时间
静态变量
当我们希望一个变量的作用域不仅仅是作用域某个类的某个对象,而是作用域整个类的时候,这时候就可以使用静态变量。
staticstatic
修饰的变量,是一个私有的全局变量。C
或者Java
中static
关键字修饰的变量,可以使用类名直接拿到这个变量对象,在其他类中可以进行修改。但是在OC
中static
修饰的变量是不能通过类名直接访问的,它只作用于它声明所在的.m文件中。static
修饰的变量必须放在@implementation
外面或方法中,它只在程序启动初始化一次。
static int num;
静态常量
constconst
修饰的变量是不可变的,如果需要定义一个时间间隔的静态常量,就可以使用const
修饰。
static const NSTimeInterval LMJTimeDuration = 0.5;
如果试图修改TimeDuration
编译器则会报错。
如果我们定义一个字符串类型的静态常量就要注意了,这两种写法是一样的,而且是可以修改的。
static NSString const * LMJName = @"iOS开发者公会";
static const NSString * LMJName = @"iOS开发者公会";
这两种写法cons
修饰的是* LMJName
,*
是指针指向符,也就是说此时指向内存地址是不可变的,而内存保存的内容时可变的。
所以我们应该这样写:
static NSString * const LMJName = @"iOS开发者公会";
当我们定义一个对象类型常量的时候,要将const
修饰符放到*
指针指向符后面。
全局变量
extern
extern修饰的变量,是一个全局变量。
extern NSString * LMJName = @"iOS开发者公会;
extern
修饰的变量也可以添加const
进行修饰:
extern NSString * const LMJName = @"iOS开发者公会;
此时全局变量只能被初始化一次extern
定义的全局常量的用法和宏定义类似,但是还是有本质上的不同的。 extern
定义的全局常量更不容易在程序中被无意窜改。
版权声明:出自MajorLMJ技术博客的原创作品 ,转载时必须注明出处及相应链接!
相关文章
- iOS之事件穿透
- 《iOS 6核心开发手册(第4版)》——1.14节秘诀:实时触摸反馈
- iOS开发UIEvent事件简介
- iOS如何查看静态库.a文件支持的cpu类型
- iOS开发UI篇—ios应用数据存储方式(归档)
- iOS利用视频做起始页
- ios GUI系统综述:iOS的图形绘制、动画与runloop
- iOS离屏渲染的解释:渲染与cpu、gpu
- 追新: SwiftUI在iOS 和macOS Beta 4中更新了哪些内容
- iOS 10 的适配问题
- iOS开发UI篇—ios应用数据存储方式(归档)
- IOS 被拒 关于 iPhone running iOS 10.3.1 on Wi-Fi connected to an IPv6 network.
- iOS - 重写set和get方法后,为什么使用时会发生无效?解析命名规范
- iOS - Harpy版本更新工具兼容版本第三方库
- iOS - .a静态库的打包(包括打包的文件中用到了一些别人的三方库和分类的处理)
- iOS开发之网络数据解析--中文输出