美文网首页
iOS开发 关于 全局变量和静态变量

iOS开发 关于 全局变量和静态变量

作者: 我是卖报的小行家 | 来源:发表于2022-05-24 14:25 被阅读0次

项目中的这些关键字 static extern const define typedef等等,我们在开发过程中也经常会遇到。

static 静态变量

当我们希望⼀个变量的作⽤域不仅仅是作⽤域某个类的某个对象,⽽是作⽤域整个类的时候,这时候就可以使⽤静态变量

static 修饰的变量,是一个私有的全局变量。C或者Java中static关键字修饰的变量,可以使用类名直接拿到这个变量对象,在其他类中可以进行修改。但是在OC中static修饰的变量是不能通过类名直接访问的,它只作用于它声明所在的.m文件中。static修饰的变量必须放在@implementation外面或方法中,它只在程序启动初始化一次。

const 常量

const修饰的变量是不可变的,如果需要定义一个时间间隔的静态常量,就可以使用const修饰。

当我们定义一个对象类型常量的时候,要将const修饰符放到*指针指向符后面。

static NSString *const LMJName = @"appkey";
extern 全局变量

extern修饰的变量,是一个全局变量。
此时全局变量只能被初始化一次。extern定义的全局常量的用法和宏定义类似,但是还是有本质上的不同的。 extern定义的全局常量更不容易在程序中被无意窜改。

define

define本质上就是文本替换,它本身并不在编译过程中执行,而是在之前(预处理过程)就已经完成了。

typedef 定义类型

它是语言编译过程中的一部分,我们在iOS开发过程中经常将typedef和枚举enum一起使用

#define和typedef区别

两者的区别:宏定义只是简单的字符串替换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装新,所以新命名的标识符具有定义变量的功能

看下面的代码以及讲解,

typedef (int *) pINT1;
#define pINT2 int*;
使用pINT1、pINT2来定义变量
pINT1 a,b;--等价于-- int *a;int *b;表示定义了两个指向整型变量的指针a和b
pINT2 a,b;--等价于-- int  *a,b;表示定义了一个指针变量a,一个整型变量b
iOS项目中设置全局常量
新建一个项目

.h里面

extern NSString *const sLogTags;
extern NSString *const APPFlyerKey;
extern NSString *const APPID;
extern NSString *const ITUNES_URL;
extern NSString *const FEEDBACK_EMAIL;

.m里面

NSString *const APPFlyerKey = @"x1111111111";
NSString *const APPID = @"1111111111";
NSString *const ITUNES_URL = @"http://itunes.apple.com/app/id1111111?mt=811";
NSString *const BuglyID = @"11111111";

相关文章

  • iOS开发 关于 全局变量和静态变量

    项目中的这些关键字 static extern const define typedef等等,我们在开发过程中也经...

  • Objective-C添加类属性

    先回顾一下静态变量与全局变量的一些知识。 头文件中定义全局变量和静态变量的区别。 源文件中定义全局变量和静态变量的...

  • block

    一篇文章看懂iOS代码块Block - 简书 在Block中可以访问局部变量 Block内访问全局变量和静态变量 ...

  • iOS 内存管理进阶

    1. 基础知识 可执行文件的内存结构 .bss区,未初始化的全局变量和静态变量 .data区,初始化的全局变量和静...

  • 存储类型和一些关键字

    参考:C Storage ClassesiOS定义静态变量、静态常量、全局变量iOS开发——OC篇&常用关键字的使...

  • 静态变量、代码块、和静态方法的执行顺序

    转载自 静态变量、代码块、和静态方法的执行顺序以备学习 代码 执行结果 结论 静态变量是全局变量 静态方法在类加载...

  • 全局变量和静态变量

    1> 修饰符全局变量在声明源文件之外使用,需要extern引用一下;静态变量使用static来修饰2> 存储地址两...

  • 动态内存分配

    全局静态变量:存放全局变量和静态变量,空间由系统管理,程序执行时开辟空间,程序结束空间回收,在程序运行期间其空间一...

  • __block修饰符

    __block用于解决block内部不能修改auto变量值的问题__block不能修饰全局变量和静态变量?编译器会...

  • extern static const inline

    static static 可以用来修饰静态变量,在iOS中,如果使用static修饰全局变量,则全局变量只能在当...

网友评论

      本文标题:iOS开发 关于 全局变量和静态变量

      本文链接:https://www.haomeiwen.com/subject/qymjprtx.html