ios AppDelegate设置全局变量

    IOS每个程序都会有一个AppDelegate类,这个类是一个单例模式。单例模式的意思是,该类在整个程序中只被实例化一次。因此,利用单例模式的appDelegate类可以在整个程序中传递数值。
    在使用appDelegate类时注意一点,不要用init方法去实例化它,这样得到每个的对象都是新的对象,也失去了传值的意义,而是要使用:
AppDelegate *app = [[ UIApplication sharedApplication ]delegate ];
这样的方式,然后再对AppDelegate的属性进行赋值,例如在A类中将appdelegate的某个属性赋值,那么在B类中得到的appdelegate的该属性值还是A类中赋的。
具体看例子:
在AppDelegate中定义一个属性str:
#import 
#import "AViewController.h"

@interface AppDelegate : UIResponder 

{
    AViewController *aVC;
    NSString *str;
}

@property (nonatomic, strong) NSString *str;//定义的目标属性

@property (strong, nonatomic) UIWindow *window;

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

@end
在A类中赋值:
#import "AViewController.h"
#import "BViewController.h"
#import "AppDelegate.h"

@interface AViewController ()

@end

@implementation AViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    AppDelegate *app = [[UIApplication sharedApplication] delegate];//单例初始化方式
    app.str = @"aaa";
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(10, 200, 300, 40);
    [btn setTitle:@"next" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(next) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}
- (void)next
{
    BViewController *bVC = [[BViewController alloc] init];
    [self.navigationController pushViewController:bVC animated:YES];
}
 在B类中取值: 
  
#import "BViewController.h"

@interface BViewController ()

@end

@implementation BViewController

@synthesize app;

- (void)viewDidLoad
{
    [super viewDidLoad];
    app = [[UIApplication sharedApplication] delegate];
    NSLog(@"B类接受的结果为:%@", app.str);
}


得到的结果为:
2014-08-27 14:22:16.959 TestAppDelegate[4360:60b] B类接受的结果为:aaa






你可能感兴趣的:(IOS笔记)