iOS开发:const/static/extern/UIKIT_EXTERN详解与区别
4 浏览量
更新于2024-08-30
收藏 216KB PDF 举报
"iOS开发中关于const、static、extern和UIKIT_EXTERN这四个关键字的解析和应用实例"
在iOS开发中,正确理解和使用这些关键字对于编写高效、可维护的代码至关重要。接下来,我们将深入探讨每个关键字的含义和用法。
1. **const**
`const`关键字用于声明常量,它表明变量的值不应该被改变。在C和Objective-C中,`const`可以用来修饰基本类型变量和指针。当`const`修饰指针时,可以分为两种情况:
- `const`修饰指针指向的数据(*p只读):这意味着指针指向的内容不可修改,但指针本身可以改变。
- `const`修饰指针本身(p只读):指针指向的内存地址不变,但可以更改指针指向的内容。
示例:
```objc
int const *p; // p可以改变,但*p不可改变
int * const p; // p不可改变,但*p可以改变
const int * const p; // 既p也不*p都不可改变
```
常用场景包括定义全局只读变量和函数返回值不被修改,如:
```objc
NSString *const Kname = @"appkey";
```
2. **static**
`static`关键字有两层主要含义:
- 当用于局部变量时,使变量在函数调用间保持其值,即变量只会被初始化一次,其生命周期扩展到整个程序执行期间,但作用域仍限于声明它的函数内。
- 当用于全局变量时,使变量在本文件内可见,其他文件无法直接访问,提供了一种数据封装的方式。
示例:
```objc
void test() {
static int i = 0;
NSLog(@"%d", i++); // 每次调用test,i的值会累加
}
```
在上面的例子中,`i`的值会在每次调用`test`函数时保留,而不是每次都重置为0。
3. **extern**
`extern`关键字用于声明一个已经在其他地方定义过的全局变量。这允许你在不同的源文件之间共享同一个变量的引用,而无需重复定义。例如:
```objc
// file1.m
extern int sharedVar;
sharedVar = 10;
// file2.m
extern int sharedVar;
NSLog(@"%d", sharedVar); // 输出10
```
4. **UIKIT_EXTERN**
在iOS开发中,`UIKIT_EXTERN`是一个特定于UIKit框架的关键字,它是`extern`和`__attribute__((visibility("default")))`的组合。它用于声明公开的全局变量或函数,使得它们在所有导入UIKit框架的代码中都能访问。通常,苹果在其框架中使用`UIKIT_EXTERN`来定义一些常量或类的便利宏。
了解并熟练运用这些关键字,可以帮助开发者更好地组织代码,优化内存使用,并提高代码的可读性和可维护性。在实际开发中,根据具体需求选择合适的关键字是至关重要的。
369 浏览量
133 浏览量
740 浏览量
174 浏览量
373 浏览量
101 浏览量
点击了解资源详情
2025-01-11 上传
2025-01-11 上传
weixin_38629130
- 粉丝: 4
- 资源: 949
最新资源
- μC_OS-Ⅱ中文资料大全
- Linux设备驱动开发技术及应用
- uCOS-II 在ATmega128上的移植.doc
- Linux Uart Driver
- autocad-PPT
- [计算机科学经典著作].Prentice.Hall.-.The.C.Programming.Language.2nd.Edition.pdf
- Linux Programming by Example - The Fundamentals
- 简明HTML教程,适合初学者用
- AVR的GCC编程(初学者必看)
- 总线协议简介讲解I2C总线协议
- c语言程序设计经典100例
- Linker Script in Linux
- Linux System Programming
- 新一代视频压缩编码标准H.264
- Learning the Vi and Vim Editors 7th Edition
- Embedded Linux Porting