標籤:第一個 nsstring nbsp tom repr roc 實現 nonatomic 頁面
在一個項目中,我們可能需要定義幾個全域變數,在我們程式的任何位置都可以進行訪問,提高我們的開發效率。在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的對象,這個對象就是唯一的,所以就可以實現全域變數
iOS全域變數的聲明和使用