iOS 代理與block 逆向傳值 學習

來源:互聯網
上載者:User

標籤:

一般在項目中出現逆向傳值的時候就需要用到代理、block 或者通知中樞了。由於公司的項目底層封裝的很好,所以項目做了三四個月就算碰到需要逆傳的情況也不用自己處理。但是最近遇到了一個特別的情況就需要自己處理一下了,之前也在網上看了一下關於如何選擇代理、block 或者通知中樞。個人感覺代理和通知中樞都比較簡單,block稍為有點複雜。代理大家都會用,所以當時就選用了通知中樞來處理。之後有一次公司的網實在太差了,出現了逆傳資料失敗的情況,引起了我的注意,打上斷點之後才發現,通知中樞的那個方法完全沒有調用,猛然一想才記起,公司的控制器是自己寫的,在離開當前控制器的時候,已經解除綁定了,一般都是預設在銷毀的時候才去解除綁定,可能公司是全域處理在離開畫頁的時候就這樣處理了,

 

 

後面想用一下block這種看起來高檔的做法,而且也比代理寫起來簡單。其實說起block也簡單,就三步驟,定義block屬性,調用block,設定block內容。

 

當然代理我們用起來更簡單,因為太熟悉了,後一個控制器設定一個協議,設定一個delegate,,在前一個控制器跳轉到後一個控制器的時候,指定後一個控制器的代理為前一個控制器,然後前一個控制器遵守協議,再實現這個協議裡的方法,在這個方法裡會有後一個控制器傳過來的資料。

 

再理理block的順序吧。

定義block,設定block, 調用block

定義block和調用block是在一個位置的

設定block在另一個位置

 

那麼在哪裡定義這個block,在哪裡調用呢

要傳遞出資料的控制器的h檔案中要定義這個block屬性並且用copy,至於為什麼用copy,好像是不用copy的話,block就在棧區,過了就銷毀了,用了copy之後block就移到了堆上,就相當於對象了,大概是這個意思。

在要傳遞資料的控制器定義block屬性,然後,這個block屬性是否有控制器(另一個控制器)設定這個block。

為什麼另一個控制器要設定這個block,在要傳遞資料的控制器定義block屬性裡一般都會把要傳遞的資料,當然參數傳到block中,然後另一個控制器只有在設定這個block時,才能把這個傳遞過來的在block中的當作參數的資料,進行操作,比如設定到自己的控制項,屬性上。

 

傳遞資料方,定義block屬性,判斷自己的block屬性是真(有值,即被資料接收方設定把傳遞出的資料設定在自己)

資料接收方,設定這個block,把block中的參數(傳遞的資料)處理到適合的地方(控制項顯示,子控制項分發,屬性儲存再次處理)

 

 

iOS 代理與block 逆向傳值 學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.