? ? ? 上次寫(xiě)了窗口的相關(guān)內(nèi)容经瓷,突然覺(jué)得很low爆哑。low到我自己看到就起雞皮疙瘩,我想對(duì)于但凡對(duì)于編程有些了解的人都應(yīng)該知道哦舆吮。感覺(jué)像是1+1=2這么簡(jiǎn)單揭朝。其實(shí)我這樣想不對(duì)队贱,1+1到底等于幾現(xiàn)在可是一個(gè)很深?yuàn)W的問(wèn)題。從數(shù)學(xué)角度來(lái)講就是等于2萝勤。其他角度擁有各種答案露筒。不扯了,進(jìn)入正題敌卓。是我個(gè)人覺(jué)得非常難以明白的,但也是非常重要的一塊兒知識(shí)伶氢,即協(xié)議與代理趟径。
首先來(lái)說(shuō)一下協(xié)議。
好處:節(jié)省代碼量
協(xié)議:共同遵守的條約癣防,可以不遵守蜗巧,遵守了也可以不落實(shí)。聽(tīng)起來(lái)是不是覺(jué)得協(xié)議很繞蕾盯,其實(shí)是我說(shuō)的繞了幕屹。可以這樣講级遭,協(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í)行丢郊。
簡(jiǎn)單舉一個(gè)例子盔沫,過(guò)馬路時(shí)的紅綠燈就是一個(gè)協(xié)議(對(duì)于好公民來(lái)說(shuō))。不多說(shuō)枫匾,請(qǐng)看示例
@required//強(qiáng)制執(zhí)行架诞,默認(rèn)的,不寫(xiě)就默認(rèn)強(qiáng)制執(zhí)行
- (void)redLight;
- (void)greenLight;
@optional//選擇執(zhí)行
- (void)yellowLight;
這是不是很明顯了干茉,協(xié)議是一個(gè)公共接口谴忧,只要遵守協(xié)議的類(lèi)都可以使用這個(gè)接口。強(qiáng)制執(zhí)行的必須實(shí)現(xiàn)等脂,選擇執(zhí)行的自己決定是否實(shí)現(xiàn)俏蛮。
聲明協(xié)議的步驟:
1、創(chuàng)建聲明協(xié)議:commcnd+N -> Object-c File ->選擇Protocol(下面有圖)
2上遥、聲明協(xié)議方法(示例見(jiàn)上)
3搏屑、遵守協(xié)議實(shí)現(xiàn)協(xié)議步驟:
(1)導(dǎo)入?yún)f(xié)議名#import"協(xié)議名.h"
(2)@interface類(lèi)名:父類(lèi)名<協(xié)議名>
(3)實(shí)現(xiàn)協(xié)議里面的方法
然后就是讓人難受又驚喜的代理了
代理又叫做委托--自己做不了或者不去做,讓別人去做
代理的使用步驟:
*前三步 是寫(xiě)在 給別人值(幫別人做事)第二個(gè)頁(yè)面
1粉楚、聲明代理方法
2辣恋、聲明屬性接口
3亮垫、確定什么時(shí)候觸發(fā)代理
*后三步寫(xiě)在接收數(shù)據(jù)的那第一個(gè)頁(yè)面
4、導(dǎo)入類(lèi)名代理名
5伟骨、掛上代理(*****是否能調(diào)用代理方法)
6饮潦、實(shí)現(xiàn)代理方法
具體代碼量蠻多的,跟著步驟不難寫(xiě)出來(lái)携狭,代碼嘛 多敲幾次記憶總比單看來(lái)的實(shí)在继蜡。我就偷把懶,略過(guò)了逛腿。