#pragma -------------協(xié)議-----------
?協(xié)議:共同遵守的條約 可以不遵守?遵守了->也可以不落實(shí)
?Protocol :協(xié)議 制定共同實(shí)現(xiàn)的方法(如果不實(shí)現(xiàn)會(huì)警告 但不會(huì)崩潰)
?協(xié)議定義:1科平、協(xié)議只有聲明文件 只需要告訴人要遵守哪個(gè)方法 不需要指定具體怎么去實(shí)現(xiàn)
?2、協(xié)議有強(qiáng)制執(zhí)行(@required)和選擇執(zhí)行(@optional),默認(rèn)的是強(qiáng)制執(zhí)行
?@required?//強(qiáng)制執(zhí)行?默認(rèn)的 不寫就默認(rèn)
- (void)redLight;
- (void)greenLight;
?@optional?//選擇執(zhí)行
- (void)yellowLight;
?協(xié)議是一個(gè)公共接口 只要遵守協(xié)議的類都可以使用這個(gè)接口
?聲明協(xié)議步驟:
?1姜性、創(chuàng)建聲明協(xié)議:commcnd+N -> Object-c File ->選擇Protocol
?公式:?@protocol?協(xié)議名
?2瞪慧、聲明協(xié)議方法:只要遵守協(xié)議的類都可以使用這個(gè)接口
?聲明協(xié)議的方法有兩種;(1):強(qiáng)制執(zhí)行(@required)不寫的話默認(rèn)強(qiáng)制執(zhí)行
?(2):選擇執(zhí)行(@optional)
?3、遵守協(xié)議 實(shí)現(xiàn)協(xié)議步驟:
?1部念、導(dǎo)入?yún)f(xié)議名?#import"協(xié)議名.h"
?2弃酌、@interface?類名?:?父類名<協(xié)議名>
?3、實(shí)現(xiàn)協(xié)議里面的方法
?為什么要使用協(xié)議儡炼?協(xié)議不是一對(duì)一妓湘,而是多種類都可以使用
?答:協(xié)議是一個(gè)公共接口,可以通過公共接口去聲明方法,讓只要遵守協(xié)議的類都可以使用,就不用單獨(dú)去聲明接口方法。節(jié)省代碼量
?#pragma ------------代理-----------
?代理:1乌询、也是一個(gè)協(xié)議榜贴,讓別人幫忙做某件事的協(xié)議
?2、自己做不了或者不去做妹田,讓別人去做
?代理又叫做委托?delegate
使用步驟:
?前三步?是寫在 給別人值(幫別人做事)第二個(gè)頁面
?1唬党、聲明代理方法
?2鹃共、聲明屬性接口
?3、確定什么時(shí)候觸發(fā)代理
?后三步?寫在接收數(shù)據(jù)的那?第一個(gè)頁面
?4初嘹、導(dǎo)入類名?代理名
?5及汉、掛上代理?(*****是否能 調(diào)用代理方法)
?6、實(shí)現(xiàn)代理方法
?#pragma --------程序的執(zhí)行流程-----------
?程序的執(zhí)行流程:
?程序的入口是main函數(shù),使用 代理?;根據(jù)程序的運(yùn)行方法進(jìn)入不同的代理方法
?__FUNCTION__?當(dāng)前執(zhí)行的方法
__LINE__?當(dāng)前的行數(shù)
?NSLog(@"%s %d",__FUNCTION__,__LINE__);
?啟動(dòng)流程:
?1屯烦、main?程序的入口(只執(zhí)行一次)
?2坷随、加載完所有選項(xiàng),準(zhǔn)備啟動(dòng)->可以在這個(gè)方法里面寫需要加載的內(nèi)容(窗口、啟動(dòng)時(shí)要?jiǎng)?chuàng)建的對(duì)象驻龟、數(shù)據(jù),(只執(zhí)行一次)
?application didFinishLaunchingWithOptions:
?3温眉、進(jìn)入活動(dòng)狀態(tài)->可以看到加載出來的內(nèi)容->還原之前的狀態(tài)(不止調(diào)用一次)
?applicationDidBecomeActive:
?按HOME鍵或者其他應(yīng)用程序進(jìn)入后臺(tái)的步驟:
?1、即將進(jìn)入非活動(dòng)狀態(tài)(不止調(diào)用一次)->在這方法里可以寫想要保存的應(yīng)用狀態(tài)
?? {applicationWillResignActive:
?1??當(dāng)應(yīng)用程序?qū)⒁敕腔顒?dòng)狀態(tài)執(zhí)行,
?2??進(jìn)入非活動(dòng)狀態(tài)執(zhí)行的條件:1翁狐、比如來電話了?2类溢、HOME鍵}
?2、進(jìn)入后臺(tái)狀態(tài)?(以前進(jìn)入后臺(tái)15秒后應(yīng)用程序?qū)⒉辉龠\(yùn)行)如果想讓應(yīng)用程序一直運(yùn)行,可以在這方法里面進(jìn)行操作?(不止調(diào)用一次)
?? applicationDidEnterBackground:
?再次回到應(yīng)用程序執(zhí)行流程:
?1露懒、從后臺(tái)即將進(jìn)入前臺(tái)時(shí)調(diào)用(不止調(diào)用一次)
?applicationWillEnterForeground:
?2闯冷、已經(jīng)進(jìn)入活動(dòng)狀態(tài)
?applicationDidBecomeActive:
?即將退出應(yīng)用程序:(調(diào)用一次)
?applicationWillTerminate:
#pragma --------回顧----------
?1、協(xié)議
?2懈词、代理
?3蛇耀、程序的執(zhí)行流程
?1、協(xié)議:公共接口?可以在協(xié)議里面聲明 一些公共的方法 只要遵守協(xié)議的類?都可以使用這些協(xié)議方法
?導(dǎo)入?yún)f(xié)議:<協(xié)議名>
?好處:節(jié)省代碼量?不用重復(fù)去聲明相同的方法
?2坎弯、代理:委托別人去幫忙做某件事?也是一個(gè)特殊的協(xié)議
?3纺涤、程序的執(zhí)行流程
?程序的入口是main?
?main會(huì)根據(jù)程序的運(yùn)行狀態(tài)?使用代理?去調(diào)用?對(duì)應(yīng)狀態(tài)的方法
?啟動(dòng)流程:
?1、main程序的入口
?main
?2抠忘、加載完所有選項(xiàng)?準(zhǔn)備啟動(dòng)?->?可以在這個(gè)方法里面寫 需要加載的內(nèi)容(窗口撩炊、啟動(dòng)時(shí)需要?jiǎng)?chuàng)建的對(duì)象、數(shù)據(jù))(只執(zhí)行一次)
?application:didFinishLaunchingWithOptions:
?3崎脉、進(jìn)入活動(dòng)狀態(tài)-》可以看到加載出來的內(nèi)容?-》還原之前的狀態(tài)(不止調(diào)用一次)
?applicationDidBecomeActive:
?按HOME鍵或者其他使應(yīng)用程序進(jìn)入后臺(tái)步驟:
?1拧咳、即將進(jìn)入非活動(dòng)狀態(tài)(不止調(diào)用一次)->想要保存的應(yīng)用狀態(tài)
?applicationWillResignActive:
?2、進(jìn)入后臺(tái)狀態(tài)(之前進(jìn)入后臺(tái)15秒后應(yīng)用程序?qū)⒉辉龠\(yùn)行)如果想讓程序一直運(yùn)行?可以在這個(gè)方法里面進(jìn)行操作 (不止調(diào)用一次)
?applicationDidEnterBackground:
?再次回到應(yīng)用程序執(zhí)行流程:
?1囚灼、即將回到前臺(tái)(不止調(diào)用一次)
?applicationWillEnterForeground:
?2呛踊、已經(jīng)進(jìn)入活動(dòng)狀態(tài)
?applicationDidBecomeActive:
?即將退出應(yīng)用程序(只調(diào)用一次)
?applicationWillTerminate: