MAR.27 | IOS隨手筆記

[ 我見 我聞 ]

  • AppDelegate
  • 生命週期
  • UIView、UIWindow、UIScreen

 


[ 我學 ]

0DQa9FFkKk

  • Foreground :前台
  • Background :後台
  • Not running:應用程式並沒有啟動
  • Inactive :應用程式運行在前台但是沒有接收到事件響應
  • Active :應用程式運行在前台接受到事件響應
  • Background :運行在後台並且執行代碼
  • Suspended :運行在後台但是沒有運行代碼

參考 從實踐談iOS生命周期

#AppDelegate

  • 在IOS中相當重要,負責管理整個Application生命週期
  • 每個Iphone應用程式都有一個UIApplication
  1. UIApplication是開始負責初始化並顯示UIWindow
  2. 負責加載應用程式的第一個UIView到UIWindow
  3. 透過UIApplicationDelegate這代理來幫助管理應用程式的生命週期
  • UIApplication負責接收事件 ; UIApplicationDelegate負責決定應用程式要如何響應這些事件(包括:生命週期事件-程式啟動或關閉.系統事件-來電)

#生命週期

  • 當程式載入,啟用入口

Objective-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSLog(@"程式載入時啟用");
    return YES;
 }

Swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    print("程式載入時啟用")
    return true
 }
  • 在應用程式將要由活度狀態切換到非活動狀態的時候(例如:按下HOME鍵),在此期間應用程式不再接收訊息

Objective-C

- (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@"應用程式將要進入非活動狀態,即將進入後台");
}

Swift

func applicationWillResignActive(application: UIApplication) { 
   print("應用程式將要進入非活動狀態,即將進入後台") 
 }
  • 當程式被推到後台時用,要設置後台繼續運行

Objective-C

- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@"應用程式支援在後台執行,進入後台運行");
}

Swift

 func applicationDidEnterBackground(application: UIApplication) { 
    print("應用程式支援在後台執行,進入後台運行") 
 }
  • 當程式從後台將重新回到前台時

Objective-C

- (void)applicationWillEnterForeground:(UIApplication *)application {
    NSLog(@"應用程式將要進入活動狀態,即將進入前台運行");
}

Swift

 func applicationWillEnterForeground(application: UIApplication) { 
   print("應用程式將要進入活動狀態,即將進入前台運行") 
 }
  • 當應用程式進入活動狀態執行

Objective-C

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"應用程式已進入前台,處於活動狀態");
}

Swift

func applicationDidBecomeActive(application: UIApplication) {  
    print("應用程式已進入前台,處於活動狀態"") 
 }
  • 當程式要退出,通常是用来保存數據和一些退出前的清理工作。需要要設置 UIApplicationExitsOnSuspend 的鍵值

Objective-C

- (void)applicationWillTerminate:(UIApplication *)application {
    NSLog(@"應用程式將要退出,通常用於保存數據和一些退出前的清理工作");
}

Swift

 func applicationWillTerminate(application: UIApplication) { 
  print("applicationWillTerminate===>") 
  self.saveContext() 
 }

-參考

  1. AppDelegate 的详解
  2. Hello Swift!<Appdelegate的生命周期以及变量定义>

#UIView、UIWindow、UIScreen

  • UIView
  1. 定義矩形區域,並管理其內容
  2. 執行時期UIView物件負責呈現該區域所有內容,並且處理與該區域的所有互動

—>螢幕上看到的都是UIView

  • UIWindow
  1. 管理與協調在App中的所有UIView物件
  2. 與UIScreen合作顯示在實際的螢幕上

—>App只會有一個UIWindow,負責管理所有的UIVew,及分派事件給它們

  • UIScreen
  1. 定義實際螢幕屬性
  2. 取得主要的螢幕物件,及其他附加螢幕物件
  3. 定義螢幕的長寬及其他螢幕屬性,像是亮度

螢幕快照 2017-03-27 下午2.24.23.png


[ 我思 ]

現在還無法馬上摸清專題要如何寫,現在就慢慢往前吧!在有限時間,一步步搞懂,先從了解整個IOS概念,到學習Objective C,進而看程式碼試試看,現在也許都像無字天書一樣,離好遠好遠~但我想等到實習那天結束,這過程中一定有滿滿收穫!無論是學習新語言也好,如何開發也好,勢必都會有所成長!

發表留言