iOS全局变量的声明和使用

在一个项目中,我们可能需要定义几个全局变量,在我们程序的任何位置都可以进行访问,提高我们的开发效率。在iOS中我们如何来实现呢?我们主要使用的是AppDelegate类来实现。如下:

(1)AppDelegate.h:

  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface AppDelegate : UIResponder <UIApplicationDelegate>  
  4.   
  5. @property (strong, nonatomic) UIWindow *window;  
  6.   
  7. @property (strong,nonatomic) NSString *myName;//声明一个全局变量;  
  8.   
  9.   
  10. @end  

 

 

(2)ViewController.m

这个是第一个页面。

  1. #import "ViewController.h"  
  2. #import "AppDelegate.h"   //需要引入这个头文件;  
  3.   
  4.   
  5. @interface ViewController ()  
  6.   
  7. @end  
  8.   
  9. @implementation ViewController  
  10.   
  11. - (void)viewDidLoad {  
  12.   [super viewDidLoad];  
  13.     
  14. }  
  15.   
  16. - (void)viewDidAppear:(BOOL)animated{  
  17.     
  18.   [super viewDidAppear:true];  
  19.     
  20.   AppDelegate *app = [[UIApplication sharedApplication] delegate];  
  21.     
  22.   NSLog(@"%@",app.myName);  
  23.   app.myName = @"第一个页面";  
  24.     
  25. }  
  26.   
  27.   
  28. @end  


(3)SecondViewController.m

 

这个是第二个页面。

  1. #import "SecondViewController.h"  
  2. #import "AppDelegate.h"  
  3.   
  4. @interface SecondViewController ()  
  5.   
  6. @end  
  7.   
  8. @implementation SecondViewController  
  9.   
  10.   
  11. - (void)viewDidLoad {  
  12.   [super viewDidLoad];  
  13.     
  14. }  
  15.   
  16. - (void)viewDidAppear:(BOOL)animated{  
  17.   
  18.   AppDelegate *app = [[UIApplication sharedApplication] delegate];  
  19.   NSLog(@"%@",app.myName);  
  20.     
  21.   app.myName = @"第二个页面";  
  22.     
  23. }  
  24.   
  25. @end  


最后在两个页面之间跳转,输出结果如下:

 

 

这表示我们对同一个变量进行了操作。为什么在AppDelegate中可以声明全局变量呢?因为使用了单例,AppDelegate就是一个单例的类,实现了UIApplicationDelegate这个委托。只要我们在程序的任何地方声明了AppDelegate的对象,这个对象就是唯一的,所以就可以实现全局变量

posted @   孙富有(iOS工程师)  阅读(737)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
点击右上角即可分享
微信分享提示