一、iOS的系統架構分爲4層——Cocoa Touch層、Media層、Core Services層和Core OS層。數據庫
二、自動佈局(Auto Layout)最早應用於Mac 0S X 10.7的開發,它爲視圖佈局定義一套約束,而約束定義了兩個界面中視圖之間的關係。架構
三、AppDelegate是應用程序委託對象,繼承了UIResponder類,並實現了UIApplicationDelegate委託協議。前者使子類AppDelegate具備處理相應時間的能力,然後者委託協議使其可以成爲應用程序委託對象,這種對象可以響應應用程序的生命週期。相應的,AppDelegate的子類也可以實現這兩個功能。併發
四、ViewController類繼承自UIViewController類,它是視圖控制器類,在工程中扮演着根視圖和用戶事件控制類的角色。 app
五、nib等同於xib。通常而言,一個工程中能夠有多個xib文件,一個xib文件對應着一個視圖控制器和多個視圖,而使用故事版時,一個工程只須要一個故事板文件就能夠了。故事板還能夠描述界面之間的導航關係。 事實上,故事板是多個xib文件集合的描述文件,也採用xml格式。框架
六、應用的生命週期:做爲應用程序的委託對象,AppDelegate類在應用生命週期的不一樣階段會回調不一樣的方法。佈局
下面簡要介紹下iOS應用的的5種狀態。ui
Not Running(非運行狀態)。應用沒有運行或被系統終止。編碼
Inactive(前臺非活動狀態)。應用正在進入前臺狀態,可是還不能接受事件處理。spa
Active(前臺活動狀態)。應用進入前臺狀態,能接受事件處理。code
Background(後臺狀態)。應用進入後臺後,依然可以執行代碼。若是有可執行的代碼就會執行代碼,若是沒有可執行的代碼或者將可執行的代碼執行完畢,應用會立刻進入掛起狀態。
Suspended(掛起狀態)。處於掛起的應用進入一種「冷凍「狀態,不能執行代碼。若是系統內存不夠,應用會被終止。
在應用狀態躍遷的過程當中,iOS系統會回調AppDelegate中的一些方法,而且發送一些相應的通知:
application:didFinishLaunchingWithOptions:應用啓動並進行初始化時會調用該方法併發出通知,這個階段會實例化根視圖控制器。
applicationDidBecomeActive:應用進入前臺並處於活動狀態時調用該方法併發出通知。這個階段能夠恢復UI的狀態。
applicationWillResignActive:應用從活動狀態進入到非活動狀態時調用該方法併發出通知。這個階段能夠保存UI的狀態。
applicationDidEnterBackground:應用進入後臺時調用該方法併發出通知。這個階段能夠保存用戶數據,釋放一些資源(例如數據庫資源等)
applicationWillEnterForeground:應用進入到前臺,可是尚未處於活動狀態時調用該方法併發出通知。這個階段能夠恢復用戶數據。
applicationWillTerminate:應用被終止時調用該方法併發出通知,但內存清除時除外。這個階段釋放一些資源,也能夠保存用戶數據。
下面咱們以幾個應用場景爲切入(具體分析就不寫了,相信你們確定也都能理解):
應用啓動場景:Not running→Inactive→Active
應用退出場景:該場景的狀態躍遷過程能夠分爲兩種狀況,能夠在後臺運行或掛起和不能夠。根據產品屬性文件中的相關屬性Application does not run in background能夠控制這兩種這兩種狀態。
(1)應用能夠在後臺運行或掛起:Active → Inactive → Background→Suspended
(2)應用不能夠在後臺運行或掛起:Active → Inactive → Background→Suspended→Not running
掛起從新運行場景:Suspended → Background → Inactive → Active
內存清除-應用終止場景: Background→Suspended→Not running
七、視圖生命週期
在視圖不一樣的生命週期中,視圖控制器會回調不一樣的方法。
在視圖控制器已被實例化,視圖被加載到內存中時調用viewDidLoad方法,這個時候視圖並未出現。在該方法中,一般進行的是對所控制的視圖進行初始化處理。
視圖可見先後會調用viewWillAppear:方法和viewDidAppear:方法。視圖不可見先後會調用viewWiiDisappear:和viewDidDisappear:方法。4個方法調用父類相應的方法以實現其功能,編碼時該方法的位置可根據狀況作以調整,以下:
1 -(void)viewWillAppear:(BOOL)animated 2 { 3 [super viewWillAppear:YES]; 4 }
viewDidLoad方法在應用運行的時候只調用一次,而上述4個方法能夠被反覆調用屢次,他們的使用很普遍但同時也具備很強的技巧性。
在低內存狀況下,iOS會調用didReceiveMemoryWarning:和viewDidUnload:方法。iOS6之後就再也不使用viewDidUnload:。didReceiveMemoryWarning:方法的主要職能是釋放內存,包括視圖控制器中的一些成員變量和視圖的釋放。以下:
1 - (void)didReceiveMemoryWarning { 2 self.button = nil; 3 self.myStringD = nil; 4 [myStringC release]; 5 [super didReceiveMemoryWarning]; 6 }
7.一、iOS6 UI狀態保持和恢復,即當應用退出的時候,須要保持界面中UI元素的狀態,再次進來的時候看到的狀態與退出時是同樣的。
在iOS6中,咱們能夠在如下3中地方實現狀態保持和恢復:應用程序委託對象,視圖控制器,自定義視圖。
八、設置產品屬性,在Xcode中,產品與Target直接相關,而Target與Project直接相關。
8.一、產品屬性包括Project和Target兩塊內容。一個工程只能有一個Project,但能夠有一個或多個Target。
8.二、Target繼承了Project。對於Target和Project下都有的設置項,可根據須要對Target進行再設置,此設置可覆蓋Project的設置。如下爲你們介紹下4個經常使用的產品屬性。
8.2.一、設定屏幕方向。Target文件-->Device Orientations或者直接在plist文件中修改。
8.2.二、設置應用圖標。Target文件-->App Icons Source-->Images.xcassets-->AppIcon,圖片名能夠不作修改,由於Xcode會自動給圖標更名,但文件格式(PNG)和大小必定要按照要求設定。普通App Icons的圖片大小爲57×57像素,名稱爲Icon.png。Retina顯示屏App Icons的圖片大小爲114×114像素,名稱爲Icon@2×.png。
8.2.三、設置啓動屏幕。啓動屏幕是應用啓動時一閃而過的圖片。Target-->Launch Images Source-->Images.xcassets-->LaunchImage。對於普通的iPhone設備,這個圖片的大小爲320×480,文件以Default.png,Retina顯示技術設備的圖片大小爲640×960像素,文件名爲Default@2×.png。
8.2.四、設置設備支持狀況。Target-->Device,從中選擇iPhone、iPad或者Universal選項,其中Universal表示同事支持iPhone和iPad設備。
九、iOS API簡介。
9.一、第一條咱們已經提到了iOS的總體架構組成,一共分爲4層--Cocoa Touch層、Media層、Core Services層和Core OS層。
Cocoa Touch層。該層提供了構建iOS應用的一些基本系統服務(如多任務、觸摸輸入和推送通知等)和關鍵框架。
Media層。該層提供了圖形、音頻、視頻和AirPlay技術。
Core Services層。該層提供了iCloud、應用內購買,SQLite數據庫和XML支持等技術。
Core OS層。該層提供了一些低級功能,例如重力加速計、藍牙等技術,開發中通常不直接使用它。
9.二、若是使用API幫助。
假設咱們對於didReceiveMemoryWarning這個方法有不少疑惑,咱們能夠嘗試下面幾種方法查找幫助文檔。
9.2.1雙擊選擇該方法,而後選擇右邊的Show Quick Help Inspecter查看,下面還包括案例介介紹。
9.2.二、option+雙擊該方法能夠打開一個Xcode的API幫助文檔,這個比較完整、全面。
資料:《iOS開發指南》