控制器和聲明周期

多控制器管理

pch文件

  1. ** 創(chuàng)建PCH文件 **
  2. ** 系統(tǒng)內(nèi)增加PCH文件(pre搜索) **

** 注意:PCH文件的路徑為真實(shí)路徑.不是bounds路徑就可以了. **
作用:

  1. 導(dǎo)入公用的頭文件
  2. 導(dǎo)入公用的宏(全局宏)
  3. 自定義NSLog(系統(tǒng)的NSLog非常消耗cpu,所以定義NSLog減少消耗,進(jìn)行測試.
  4. 如果有c文件存在,會(huì)產(chǎn)生沖突,C中編譯無法識(shí)別OC(加條件編譯,OC時(shí)才才執(zhí)行).

首先因?yàn)槭窃谥笆褂玫耐瞥鰏wift后就暫停系統(tǒng)自動(dòng)創(chuàng)建了,我們手動(dòng)創(chuàng)建時(shí)需要配置系統(tǒng)根目錄文件.

pch文件中常用代碼
 //如果有C文件還要加判斷不然報(bào)很多錯(cuò)誤 
#ifdef __OBJC__
//全局宏
#define M 32
//導(dǎo)入共用的頭文件
#import "ZLPerson.h"
//調(diào)試時(shí)可以使用自定義的NSLog,上線不能使用
#ifdef DEBUG
//在DEBUG下才替換NSLog
#define ZLLog(...) NSLog(__VA_ARGS__)

#else
//否則自定義的打印方式不走任何替換
#define ZLLog(...)

#endif
#endif

UIApplication

  1. 單例設(shè)計(jì)模式

  2. 可以設(shè)置角標(biāo)

          0. 獲取程序?qū)ο?      1. 創(chuàng)建遠(yuǎn)程通知設(shè)置對象 UIUserNotificationSettings 類型對象
          2. iOS8.0之后需要注冊 程序?qū)ο笞?[app registerUserNotificationSettings:settings] 
          3. 設(shè)置角標(biāo)
    

app.applicationBadgeNumber.
4. 允許顯示通知

  1. app對象設(shè)置狀態(tài)欄(必須先添加info.plist 的View controller-based status bar appearance為no)
  2. 網(wǎng)絡(luò)指示器(聯(lián)網(wǎng)的圖標(biāo))networkActivityIndicator屬性.網(wǎng)絡(luò)菊花
  3. 分享:鏈接對象(NSNRL 創(chuàng)建時(shí)@"http://www.baidu.com")電話tel,短訊msm,郵件等.

UIApplication的代理方法作用

//了解這些方法什么時(shí)候開始調(diào)用,并且** 自己手動(dòng)添加一個(gè)接受內(nèi)存警告的方法.(因?yàn)榇矸椒ㄏ仁盏絻?nèi)存警告) **

  1. didfinishlaunching啟動(dòng)
  2. background后臺(tái)
  3. foreground前臺(tái)

程序啟動(dòng)的過程

1.打開程序-->2.執(zhí)行main函數(shù)-->3.執(zhí)行UIApplicationMain函數(shù)(各個(gè)參數(shù)的含義:第三個(gè)??)-->4.初始化UIApplication(創(chuàng)建和設(shè)置代理對象,開啟循環(huán)事件)-->5.監(jiān)聽系統(tǒng)事件.-->6.結(jié)束程序.

手動(dòng)在空白程序中創(chuàng)建控制器添加window和view(關(guān)閉storyBoard作為程序入口)

  1. 創(chuàng)建UIWindow(代理中有window屬性)
  2. 創(chuàng)建控制器對象(控制器被創(chuàng)建時(shí)就自帶一個(gè)view屬性.
  3. 將控制器對象作為window對象(rootViewController屬性)的根控制器
  4. 設(shè)置window對象(keyWindow)為可視化.

控制器的三種創(chuàng)建方式.

  1. alloc init
  2. board
    1.
  3. XIB(注意設(shè)置file`s Owner)的兩個(gè)重要點(diǎn)
    1. 指定名字
    2. 同名
    3. 同名去掉controller

控制器中的UIView的創(chuàng)建(采用的是懶加載的方式)

控制器創(chuàng)建好以后, 控制器所管理的View是如何創(chuàng)建的?

  1. 控制器的View是通過調(diào)用控制器的loadView方法來創(chuàng)建的。這個(gè)方法是UIViewController中的一個(gè)方法。
    ** 只要控制器的loadView方法被調(diào)用了, 那么證明控制器的View創(chuàng)建好了。

  2. 當(dāng)調(diào)用完畢控制器的loadView方法以后, 從這時(shí)開始, 才創(chuàng)建好了控制器的view

  3. 當(dāng)控制器的View被創(chuàng)建好以后, 緊接著就調(diào)用控制器的viewDidLoad方法

  4. 控制器的View采用了懶加載的方式, 也就是說, 在需要的使用(在用到的時(shí)候)才會(huì)創(chuàng)建(調(diào)用loadView方法)。

** 注意: 無論控制器是如何創(chuàng)建的, 只要在控制器中, 重寫了("實(shí)現(xiàn)了")loadView方法, 并且沒有調(diào)用[super loadView]方法, 那么最終控制器的View就必須完全在loadView方法中自己來創(chuàng)建了。所以loadView方法可以用來自定義View。

多控制器

  1. 導(dǎo)航控制器
    navigationItem屬性的具體內(nèi)容:
  • title屬性

  • titleView屬性

  • leftBarButtonItem // 只能設(shè)置左上角的一個(gè)按鈕

  • leftBarButtonItems // 可以設(shè)置左上角有多個(gè)按鈕

  • rightBarButtonItem // 只能設(shè)置右上角的一個(gè)按鈕

  • rightBarButtonItems // 可以設(shè)置右上角有多個(gè)按鈕

  • backBarButtonItem // 設(shè)置下一個(gè)控制器, 左上角的按鈕。默認(rèn)情況下,該按鈕文字與上一個(gè)控制器的title文字相同。

  1. UITabBarController

控制器的生命周期

當(dāng)控制器被創(chuàng)建加載一次會(huì)調(diào)用系統(tǒng)的這些方法

1. loadView                加載view
2. viewDidLoad             已經(jīng)加載view
3. viewWillAppear          view將要被顯示
4. viewWillLayoutSubviews  view將要布局子控件
5. viewDidlayoutSubviews   view已經(jīng)布局子控件
6. viewDidAppear           view已經(jīng)顯示 
7. viewWillDisAppear       view將要消失
8. viewDidDisAppear        view已經(jīng)消失
9. delloc方法銷毀.          控制器銷毀
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容