iOS全局变量的声明和使用

时间:2024-01-17 13:47:50

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

(1)AppDelegate.h:

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

(2)ViewController.m

这个是第一个页面。

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

(3)SecondViewController.m

这个是第二个页面。

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

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

iOS全局变量的声明和使用

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