OC代理

代理模式是一種消息傳遞方式, 一個完整的代理包括:委托對象,代理對象和協(xié)議.

a. 協(xié)議:用來指定代理雙方可以做什么, 必須做什么

b. 委托對象:根據(jù)協(xié)議指定代理對象需要完成的事, 即調(diào)用協(xié)議中的方法.

c. 代理對象:根據(jù)協(xié)議實現(xiàn)委托對象需要完成的事, 即實現(xiàn)協(xié)議中的方法.

代理屬性使用weak

a. 原因:我們在UITableViewController中, 控制器的view就是UITableView, 這就相當(dāng)于UITableViewController強(qiáng)引用著UITableView(代理對象).

而當(dāng)我們設(shè)置delegate的時候, 一般都是讓UITableViewController成為代理, 這個時候如果代理也使用strong, 就會導(dǎo)致循環(huán)引用, 因此代理得用weak.

b. 為什么不用assign

weak和assign是一種"非擁有關(guān)系"的指針, 通過這兩種修飾符修飾的指針變量都不會改變被引用對象的引用計數(shù). 但是在一個對象被釋放后, weak會自動將指針置nil, 而assign不會. 在OC中, 向nil發(fā)送消息是不會導(dǎo)致崩潰的, 而assign會導(dǎo)致野指針錯誤?unrecognized selector sent to instance

代理與block對比

a. 有多個消息傳遞時, 用delegate實現(xiàn)更合適, 更清晰. block就比較臃腫, 別扭.

b. 從設(shè)計模式的角度來說,?代理更加面向過程, block則更加面向結(jié)果.

c. 性能上來說, block性能消耗略大于delegate, 因為block涉及到棧區(qū)向堆區(qū)拷貝等操作, 時間和空間上的消耗都大于代理. 而代理只是定義了一個方法列表, 在遵守協(xié)議的對象的objc_protocol_list中添加一個節(jié)點(diǎn), 在運(yùn)行時向遵守協(xié)議的對象發(fā)送消息即刻.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逼肯,一起剝皮案震驚了整個濱河市忌栅,隨后出現(xiàn)的幾起案子八拱,更是在濱河造成了極大的恐慌,老刑警劉巖房维,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件占贫,死亡現(xiàn)場離奇詭異娘扩,居然都是意外死亡皱坛,警方通過查閱死者的電腦和手機(jī)编曼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剩辟,“玉大人,你說我怎么就攤上這事往扔》妨裕” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵萍膛,是天一觀的道長吭服。 經(jīng)常有香客問我,道長蝗罗,這世上最難降的妖魔是什么艇棕? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任蝌戒,我火速辦了婚禮,結(jié)果婚禮上恢氯,老公的妹妹穿的比我還像新娘枉证。我一直安慰自己薛匪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布友鼻。 她就那樣靜靜地躺著,像睡著了一般闺骚。 火紅的嫁衣襯著肌膚如雪彩扔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天僻爽,我揣著相機(jī)與錄音虫碉,去河邊找鬼。 笑死胸梆,一個胖子當(dāng)著我的面吹牛敦捧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乳绕,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绞惦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了洋措?” 一聲冷哼從身側(cè)響起济蝉,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菠发,沒想到半個月后王滤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滓鸠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年雁乡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糜俗。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡踱稍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悠抹,到底是詐尸還是另有隱情珠月,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布楔敌,位于F島的核電站啤挎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卵凑。R本人自食惡果不足惜庆聘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一胜臊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伙判,春花似錦象对、人聲如沸澳腹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邮利。三九已至垃帅,卻和暖如春贸诚,著一層夾襖步出監(jiān)牢的瞬間酱固,已是汗流浹背运悲。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工希停, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脖苏,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像肴楷,于是被迫代替她去往敵國和親赛蔫。 傳聞我的和親對象是個殘疾皇子呵恢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 響應(yīng)鏈(事件的傳遞唤锉、事件的響應(yīng)) 事件的傳遞:從上往下窿祥,父傳子晒衩;事件的響應(yīng):從下往上听系,子傳父; 代理和Block的...
    oc123閱讀 832評論 0 1
  • 文中的問題多收集整理自網(wǎng)絡(luò),不保證100%準(zhǔn)確浪漠,還望斟酌采納陕习。 1、怎樣防止指針的越界使用問題? 答案: 1 .防...
    江河_ios閱讀 411評論 0 0
  • 1.屬性readwrite址愿,readonly该镣,assign,retain响谓,copy损合,nonatomic 各是什么作...
    曾令偉閱讀 1,056評論 0 10
  • 1.內(nèi)存管理 2.單例的理解 3.post和get的區(qū)別 4.md5和base64是什么,有什么區(qū)別 5.簡單談?wù)?..
    coder_Wg閱讀 1,291評論 1 6
  • 一.OC的三大特性 封裝娘纷、繼承嫁审、多態(tài) 1> 什么是多態(tài) 多態(tài):不同對象以自己的方式響應(yīng)相同的消息的能力叫做多態(tài)。 ...
    藍(lán)心兒的藍(lán)色之旅閱讀 1,385評論 0 2