標籤:android class code http com strong
轉載地址:http://www.apkbus.com/android-131646-1-1.html
我們開發出來的運行在iOS平台上的應用程式都有一個UIApplication類的對象。
1、是iOS應用程式的起始點,並負責初始化和顯示UIWindow;
2、負責載入應用程式的第一個UIView到UIWindow中;
3、協助管理應用程式的生命週期;
4、接收事件,再轉給它的委託"UIApplicationDelegate"來處理;此委託可處理的事件包括:應用程式的生命週期事件如程式啟動和關閉、系統事件如來電和記事項警告;
雖然UIApplication負責接收事件,但它無需我們來修改。而它的負責處理事件的委託類,其遵循UIApplicationDelegate協議,是需要我們進行開發。
例如
應用BirdsApp的委託類的聲明如下:
@interface BirdsAppDelegate : UIResponder <UIApplicationDelegate>
這個類需要實現UIApplicationDelegate協議中的方法,用於處理UIApplication接收的事件。
這些方法有很多,大概是這些:
1、應用完成登入的事件處理方法;
2、應用中斷的事件處理方法;
3、記憶體很低的事件處理方法;
4、重要改變發生的事件處理方法;
在開發時,我們需實現的最重要的方法是application:didFinishLaunchingWithOptions:,其他方法也應該去實現,雖然它們都是可選的。
在XCode4.5版中,如果使用它的模板建立項目,Xcode將會為我們建立遵守UIApplicationDelegate協議的方法,這些方法的實現代碼需要我們自己去開發。
例如,建立一個名稱為BirdsApp的項目,XCode會自動建立BirdsAppDelegate.h和BirdsAppDelegate.m檔案。
- /*BirdsAppDelegate 應用委託類*/
- #import <UIKit/UIKit.h>
- [url=home.php?mod=space&uid=661]@class[/url] BirdSightingDataController;
- @class BirdsMasterViewController;
- @interface BirdsAppDelegate : UIResponder <UIApplicationDelegate>
- @property (strong, nonatomic) UIWindow *window;
- @property (strong, nonatomic) BirdSightingDataController *dataController;
- @property (strong, nonatomic) BirdsMasterViewController *firstViewController;
- @end
- #import "BirdsAppDelegate.h"
- #import "BirdSightingDataController.h"
- #import "BirdsMasterViewController.h"
- @implementation BirdsAppDelegate
- @synthesize window = _window, dataController = _dataController, firstViewController= _firstViewController;
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
- BirdsMasterViewController *firstViewController = (BirdsMasterViewController *)[[navigationController viewControllers] objectAtIndex:0];
- BirdSightingDataController *aDataController = [[BirdSightingDataController alloc] init];
- firstViewController.dataController = aDataController;
- self.dataController = aDataController;
- return YES;
- }
- @end
複製代碼建立在storyboard基礎上的應用程式,作為UIApplication類的對象,在啟動過程中將進行下列操作。
首先,載入info.plist檔案內容到一個NSDictionary對象中,讀取字典對象的鍵UIMainStoryboardFile對應的值得到storyboard設定檔名稱,通常檔案名稱會是MainStoryboard.storyboard。
其次,載入MainStoryboard.storyboard檔案,根據檔案中記錄的第一個視圖控制器的值,自動執行個體化該控制器。該控制器稱為主視圖控制器。
再次,將主視圖控制器的所有的視圖使用addSubView方法載入到UIWindow對象中去。
這個時間點,算是完成應用啟動,調用應用委託類中的application:didFinishLaunchingWithOptions:的方法。
而以前的應用程式用Interface Builder開發,使用nib管理檢視,那麼必須在應用委託類中實現載入主視圖控制器的所有視圖和執行個體化UIWindow對象的操作。
- #import <UIKit/UIKit.h>
- @interface GuessChildAppDelegate : NSObject <UIApplicationDelegate> {
- UIWindow *window;
- UINavigationController* simple_;
- }
- @property (nonatomic, retain) UIWindow *window;
- @end
- #import "GuessChildAppDelegate.h"
- #import "WifeBirthdayController.h"
- @implementation GuessChildAppDelegate
- @synthesize window;
- #pragma mark -
- #pragma mark Application lifecycle
- -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- //CGRect frame = [[UIScreen mainScreen] bounds];
- window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- WifeBirthdayController* rootViewController = [[[WifeBirthdayController alloc] init] autorelease];
- simple_ = [[UINavigationController alloc] initWithRootViewController:rootViewController];
- [window addSubview:simple_.view];
- // Override point for customization after application launch.
- [window makeKeyAndVisible];
- return YES;
- }
- -(void)dealloc {
- [window release];
- [super dealloc];
- }
- @end
複製代碼本想記錄下應用委託類的用法,結果複習了一下應用程式的啟動過程。