標籤:
一,APP 生命週期
OC的學習在Fundation架構下,UI階段的學習在觸摸層(Cocoa Touch Layer)下的UIKit架構下(Cocoa:是OS X 和iOS 作業系統的程式運行環境)。
應用程式入口 ***
main函數:
int UIApplicationMain(int argc,char *argv[], NSString *principalClassName,NSString *delegateClassName);
// argc, argv 由main函數傳遞給UIApplicationMain. 參數包含應用程式何時,何地從系統啟動。
// principalClassName 標識應用程式的類的名稱,必須是UIApplication 類或者其子類的類名稱。若傳遞了nil 則預設為UIApplication的類名稱。(整個應用程式的老大)
// delegateClassName 標識應用程式類(UIApplication)的代理類的名稱。(負責系統與應用程式間的高層次互動,例如老大的生命週期)
UIApplicationMain函數通過接收到的第三,第四參數,執行個體化一個應用程式物件和應用程式代理程式對象。除此之外,1.建立了應用程式的事件迴圈,並且開始處理事件;2. 從info.plist載入指定的主視圖檔案。
// 應用程式生命週期
// AppDelegate.m 中
// 1:
//application:didFinishLaunchingWithOptions: 應用程式準備工作,完成載入,準備要運行了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
return YES;
}
// 2:
//程式變為啟用狀態
//重啟那些,當應用程式是未被啟用狀態時,被暫停任務(或者尚未被啟動的任務);如果應用程式之前是在後台,那麼選擇性的重新整理使用者介面
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
// 3
//應用程式將要釋放啟用狀態(還未啟用),開始轉為非啟用狀態
// 該方法是應用程式從啟用狀態轉向非啟用狀態的時候發生,一般發生在幾種特定的臨時中斷(來電話了,或者簡訊),或者使用者退出應用程式並且轉向背景時候。(啟用、非啟用、後台-三個狀態)
// 使用此方法,去暫停正在啟動並執行任務,禁用定時器,降低3D的圖形畫面播放速率,如果是遊戲那就暫停遊戲
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
// 4
// 應用程式進入後台
// 使用此方法釋放共用的資源,儲存使用者資料,使定時器無效化,並且儲存足夠的應用程式狀態資訊,為了恢複應用程式到當前的狀態,以防後續再回到應用中
// 如果應用程式支援後台執行,此方法會代替 applicatioWillTerminate: 程式完全終止,當使用者退出應用程式的時候
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
// 5
// 應用程式將要進入前台
// 發生在從那個後台到非啟用狀態轉換的過程中
// 可以恢複之前在進入後台時所做的修改
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
// 6
// 應用程式將要終止(主要判斷程式是否支援後台執行)
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
App Name & App Logo
a. App Name 顯示在手機螢幕上的名字(注意與工程名字的區分)
在Info.plist中添加 Bundle display name ,值可任意設定,中英文都可以。一般控制在中文5個字以內。多了的話,在螢幕顯示的時候就有省略符號了。
b. App Logo
App 因為可運行在不同版本的裝置上,所以logo的尺寸有很多種,理想的情況下,最好給每種裝置都準備好對應尺寸的logo。(上架的時候要多準備幾種)。
注意:Xcode中尺寸單位是pt(點),而圖片的尺寸單位是px(像素)。他們的關係:一個點上可以有多個像素,通俗講:一個點上可以滴幾滴顏料,越多,圖越清晰。
在Assets.xcassets->AppIcon 中 1x,2x,3x 表示 1個點上有1/2/3 個像素,例如 60pt 下2x, 表示要設定一個120像素的圖片.
iOS 開發學習之 User Interface(1)APP 生命週期