斯坦福iOS7公開課4-6筆記及示範Demo,斯坦福ios7公開課4-6
1.變數類型別濫用id,如果不仔細容易在程式執行時引發錯誤,因為在編譯階段編譯器只是檢測變數對象所屬類型,尤其是類型為id時代表任何類型都可以通過檢查,但不會檢測變數對象調用的方法,這樣當對象所屬類不包含所寫的調用方法時,編譯通過,但在程式運行時才會報錯。
2.簡單介紹了架構內建的集合、字型等。
3.通過使用NSAttributedString可以讓螢幕顯示的字型樣式更豐富,設定各種樣式等,詳細參見附件的示範Demo:http://files.cnblogs.com/colinhou/Attributor.zip
4.對於蘋果目前推薦的故事板Storyboard,介紹了其生命週期,並介紹了一些注意事項。
(1)viewDidLoad,這一過程中,故事板會做好初始化操作,我們設定的各種輸出(IBOutlet)也已經初始化完畢,對於整個app需要且僅需要做一次初始化的操作,應該在這裡執行,因為viewDidLoad在整個生命週期只在程式開始時執行一次。但是需要注意,此時view並沒有顯示在螢幕上,也就是view的大小等資訊都還是不確定的,所以不適合做與設定改變view大小尺寸的操作。
(2)viewWillAppear,這一過程中,view的幾何資訊已經確定,準備好要顯示了,如果還需要改變大小、動畫等,也可以在這執行。同時一些初始化操作也應當在這裡執行,例如每次切換回來要更新資料等等,比如使用,每次重新從其他地方切換過來的時候,頂部都會有一個圓圈在轉,需要擷取最新資料。
(3)viewWillDisappear,表示view馬上要從螢幕消失,這時需要停止動畫等操作,避免佔用資源,同時如果也需要儲存資料或狀態,這樣下次再切換回來的時候(viewWillAppear),方便繼續之前的操作或狀態。
(4)viewDidAppear、viewDidDisappear在view已經出現或消失時觸發,
didReceiveMemoryWarning在系統記憶體不足時觸發,
viewWill/DidLayoutSubviews用於旋轉螢幕做相應設定,後續會詳細介紹。
5.廣播機制NSNotificationCenter,如果收聽了某一事件,當滿足一定條件時,可以做出響應,觸發指定操作,有點類似於flex的訊息機制,監聽或取消監聽某一訊息。
addObserver表示收聽對象、觀察者,即誰監聽這一事件,selector表示回應程式法,name即廣播名字,表示被收聽的事件,object表示這是誰的廣播、誰的事件,如果為nil則表示不管是誰,只要這一廣播、事件發生了,都會收聽到,並作出相應操作。
同時在停止收聽廣播的時候,一定要取消收聽,這是因為NSNotificationCenter使用了不安全引用指標“unsafe retained pointer”,如果沒有取消收聽,當收聽對象不存在了,通知NSNotificationCenter發送通知時就會引起程式崩潰,這裡本來應該使用weak類型的指標,這樣指標就能夠自動變為nil,但是為了相容iOS5(weak類型指標iOS6開始使用),目前還是使用的“unsafe retained pointer”。
另外,取消收聽時建議使用指明具體資訊的方式,避免造成無法使用其他廣播。
6.介紹了使用UINavigationController管理多個View的方式,詳細見附件的Demo:http://files.cnblogs.com/colinhou/Attributor.zip
另外,如果想跳過其它view,直接對特定View進行簡易功能測實驗證時,可以在Interface Builder中把起始箭頭移至目標View,在代碼中寫好測試方法,啟動調試後就能直接進入目標View驗證功能了。
Demo效果: