iOS项目中全局变量的定义与使用

在iOS项目中,为了方便各个页面访问同一变量,通常利用AppDelegate的单例特性定义全局变量。通过在AppDelegate.h中声明,并在ViewController中使用,确保了变量的全局可达。由于AppDelegate遵循UIApplicationDelegate协议,其对象唯一,因此能实现全局变量的功能。

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

(1)AppDelegate.h:

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong,nonatomic) NSString *myName;//声明一个全局变量;


@end


(2)ViewController.m

这个是第一个页面。

#import "ViewController.h"
#import "AppDelegate.h"   //需要引入这个头文件;


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
}

- (void)viewDidAppear:(BOOL)animated{
  
  [super viewDidAppear:true];
  
  AppDelegate *app = [[UIApplication sharedApplication] delegate];
  
  NSLog(@"%@",app.myName);
  app.myName = @"第一个页面";
  
}


@end

(3)SecondViewController.m

这个是第二个页面。

#import "SecondViewController.h"
#import "AppDelegate.h"

@interface SecondViewController ()

@end

@implementation SecondViewController


- (void)viewDidLoad {
  [super viewDidLoad];
  
}

- (void)viewDidAppear:(BOOL)animated{

  AppDelegate *app = [[UIApplication sharedApplication] delegate];
  NSLog(@"%@",app.myName);
  
  app.myName = @"第二个页面";
  
}

@end

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



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



github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值