刚从C转到面向对象编程时,对一种叫做Singleton的设计模式相当鄙视,觉得他上不得台面, 今天让我们在iOS应用程序中简单的创建出一个全局变量, 比C语言中要复杂一些但是还是相当方便的。
做过iOS开发的人都知道AppDelegate这个类本身就是一个单例,所以我们可以很方便在AppDelegate中创建程序所需要的全局变量。下面我和大家分享如何一步步实现在AppDelegate中创建全局变量。
1. 首先我们在AppDelegate.h中定义全局变量:
#import
@interface AppDelegate : UIResponder
{
int a;
NSString *globalString;
}
@property (nonatomic) int a;
@property(strong, nonatomic) NSString *globalString;
@property (strong, nonatomic) UIWindow *window;
@end
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.a = 5;
self.globalString = @"中国小灵通";
}
self.window.rootViewController = [[BasicViewController alloc] initWithNibName:nil bundle:nil];
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
appDelegate.a = 10010;
appDelegate.globalString = @"中国想联通";
NSLog(@"%@ 的客服电话是: %d", appDelegate.globalString, appDelegate.a);
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
//初始化的全局变量的值
NSLog(@"%@ 的客服电话初始值为: %d", appDelegate.globalString, appDelegate.a);
appDelegate.a = 10086;
appDelegate.globalString = @"中国移不动";
NSLog(@"%@ 的客服电话是:%d",appDelegate.globalString,appDelegate.a);
FirstView *myView = [[FirstView alloc] initWithFrame:CGRectMake(334, 50, 100, 100)];
myView.backgroundColor = [UIColor cyanColor];
[self.view addSubview:myView];
//检查当前的全局变量a和globalString的值
NSLog(@"当前的a为:%d",appDelegate.a);
NSLog(@"当前的globalString为:%@", appDelegate.globalString);
}
2014-03-12 09:36:48.399 AppDelegate_Singleton[613:70b] 中国小灵通 的客服电话初始值为: 5
2014-03-12 09:36:48.401 AppDelegate_Singleton[613:70b] 中国移不动 的客服电话是:10086
2014-03-12 09:36:48.401 AppDelegate_Singleton[613:70b] 中国想联通 的客服电话是: 10010
2014-03-12 09:36:48.402 AppDelegate_Singleton[613:70b] 当前的a为:10010
2014-03-12 09:36:48.402 AppDelegate_Singleton[613:70b] 当前的globalString为:中国想联通
http://stackoverflow.com/questions/6062569/difference-between-appdelegate-m-and-view-controller-m
demo下载地址 :
http://download.csdn.net/detail/luozhonglan/7026935