搜尋

首頁  >  問答  >  主體

objective-c - 相求一个资料:IOS中各种传值方法的优缺点:我特别想知道属性传值与代理传值、通知、块传值的优缺点?

相求一个资料:IOS中各种传值方法的优缺点:我特别想知道属性传值与代理传值、通知、块传值的优缺点?

目前小弟只会代理和属性,但是就这两种也不知道有啥不同,小弟为小白求赐教~~搜索了很多也没有没有详尽的资料如果您有麻烦指导下。

迷茫迷茫2770 天前465

全部回覆(1)我來回復

  • PHPz

    PHPz2017-04-17 17:45:08

    1、屬性最直接,兩個物件可以直接接觸的,例如一個UIViewControllerA裡建構一個UIImageView,給UIImageView提供圖片。
    2、代理的環境一般是:A操作B,然後B沒有馬上返回結果,等待條件滿足是B回來通知A.常見的是網絡請求,特點是它有一個回來的動作。
    3、block在行為上和delegate類似,也是用來回調的。但是(1)block寫起來爽一點,例如彈框,彈出框後點擊事件回調,我構建一個alertView,馬上接著就可以寫它的回調alertView.clickBlock = xxx,而delegate我還要再建一個方法(2 )block會copy它內部的對象,這個會有很好的隔離作用,比如A是一個通用的單例,B->A->C,然後C處理完回調B,E->A->F,然後F處理完回呼E,如果是delegate,C回調到A之後,A是回呼給B還是E呢? A不知道。但block會copy對象,B創建block的時候把自己copy進去,C得到的回呼對象就是B。這一點有點難理解。
    4、通知相對前兩者就是:(1)一對多,一個通知發出去,所有的接收者都有反應,而且是同步的。 (2)發出者和接受者之間沒有直接的關聯,特別是在複雜的項目裡,兩個對象無法互相接觸的時候,用通知可以發訊息,就是容易亂。例如登入成功了,要更新數據,可能很多地方,而登入模組是專注於登錄,登入成功後該做哪些不該由它來管理,所以用通知比較好。當然,項目盡量少交叉互動吧。

    回覆
    0
  • 取消回覆