你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iPhone 開發概述

iPhone 開發概述

編輯:IOS開發綜合

### iPhone開發概述

沙盒機制( sandbox)

iOS 中的沙盒機制( Sandbox) 是一種安全體系,它規定了應用程序只能在為該應用程序創建的文件夾內讀取文件,不可以訪問其他地方的內容.所有的非代碼文件都保存在這個地方,比如圖片、聲音、屬性列表和文本文件等。 每一個應用程序都在自己的沙盒內 不能隨意跨越自己的沙盒去訪問別人的沙盒的內容 應用程序向外請求或者接收數據都需要經過權限認證

應用程序的五種狀態

Not runing( 未運行) 程序沒啟動 Inactive (未激活) 程序在前台運行,不過沒有接收到事件.在沒有事件處理情況下程序通常停留在這個狀態 Active (激活) 程序在前台運行而且接收到了事件.這也是前台的一個正常的模式 Background (後台) 程序在後台而且能執行代碼,大多數程序進入這個狀態後會在這個狀態上停留一會. 時間到了之後會進入掛起狀態( Suspended). 有的程序經過特殊的請求後可以長期處於 Background 狀態. Suspended (掛起) 程序在後台不能執行代碼.系統會自動把程序變成這個狀態而且不會再發出通知.當掛起時,程序還是停留在內存中的,當程序內存

應用狀態的生命周期

iOS 加載 app 將要結束時並且 app 程序差不多已經准備好運行的時候會調用這個方法,通常我們需要使用這個方法來完成 app 的初始化和最後設置的一些微調.這個方法調用發生在 app 的 window 和 UI 之前.

- (BOOL)application:(UIApplication *)application didFinishLanunchingWithOption:(NSDictionary *)LaunchOptions

當應用程序將要進入非活動狀態執行,在此期間,應用程序不接受消息或事件,比如說來電話了、鎖屏。通常在這個方法裡實現: 停止 timer 和其他周期性的任務、停止任何正在運行的請求、暫停視頻的播放、如果是游戲就暫停它、減少OpenGL ES的幀率、刮起任何分發的隊列和不重要的操作隊列(你可以處理網絡請求或者其他時間敏感的後台任務).

- (void)appliWillResignActive:(UIApplication *)application

當應用進入活動狀態執行,這個狀態剛好和上面的那個方法相反,需要實現任務的重新開始,比如說重新開始 timer, 繼續分發隊列,提高 OpenGL ES 的幀率.不過游戲要回到暫停狀態,不能自動開始.

- (void)applicationDidBecamActive:(UIApplication *)appliction

當程序被推送到後台的時候調用.所以要設置後台繼續運行,則在這個函數裡面設置即可.在這個方法需要實現:保存用戶數據或狀態信息,所有沒有寫到磁盤的文件或信息,在進汝後台時,最後都寫到磁盤去,因為程序可能在後台被殺死,釋放盡可能釋放的內存

- (void)applicationDidEnterBackground:(UIApplication *)application

當程序從後台將要程序回到前台時調用,這個剛還與上面的那個方法相反.

- (void)applicationWillEnterForeground(UIApplication *)application

當程序將要退出時被調用通常使用來保存數據和一些退出前的清理工作.這個需要設置 UIApplicationExitsOnSuspend的鍵值.

- (void)applicationWillTerminate:(UIApplication *)application

main 函數

main 函數是程序啟動的入口,在 iOS app 中, main 函數的功能被最小化,他的主要工作都交給了 UIKit framework.
# import 

# import PNAppDelegate.h

int main(int argc, char * argv[])
{
    @autoreleasepool{
        return UIApplicationMain(argc,argv,nil,NSStringFromClass([PNAppDelegate class]));
    }
}

UIApplicationMain 函數有四個函數,你不需要改變這些參數值,不過我們需要理解這些參數和程序是如何開始的: argc 和 argv 參數包含了系統帶過來的啟動時間.第三個參數確定了主要應用程序類的名稱,這個參數指定為 nil, 這樣 UIKit 就會使用默認的 UIApplication 類創建對象.第四個參數是程序自定義的代理類名,這個類負責系統和代碼之間的交互.它一般在 Xcode 新建項目是會自動生成.
另外 UIApplicationMain 函數加載了程序主界面的文件.雖然這個函數加載了界面文件,但是沒有放到應用程序的 windows 上.

重點理解, UIApplicationMain 的做的三件事:
1.根據第三個參數創建 UIApplication 對象.
2.根據第四個參數創建應用程序的 delegate, 並設置 delegate.
3.設置主事件循環( main event loop) 包括 application 的 run loop, 同時開始處理事件.

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved