天天看點

IOS回調機制

“回調”也很早就有,在C、C++中是一個非常廣泛應用的技術。到了OOP理論中,“回調”有了一個新的名稱,叫做“控制權反轉(IoC)”。我很喜歡這個名詞,比“回調(Callback)”要好了解一些。IoC就是在某個對象操作的内部,将其運作控制權交給外部來執行,而不在對象操作内部來做。還是以上面Baker為例子,其中MakePizza函數中可以做一個回調函數PreparePizza,其将準備原料的操作交給外部對象。這樣當程式運作到MakePizza函數中的PreparePizza時,會跳轉到Baker對象外面來找真正的PreparePizza函數。這樣當我們在用Baker類時,可以定義一個PreparePizza函數,并将Baker對象的MakePizza操作的回調函數設定為我們自己的PreparePizza函數,就實作了在不破壞原有Baker對象代碼的前提下,自定義了目前Baker執行個體的MakePizza函數。可以多準備一定蔥,或者增加一些胡椒,自然所得的口味不一樣。“回調”技巧能在保證程式可維護性的前提下,給予程式設計極大地自由度,自然是程式員最愛的技巧之一。

另一種用法:在ios開發過程中,經常會遇到A類調用B類的某一個方法,調用完B類方法之後,再執行A類中的其他方法的操作。

主要有三種:delegate,block和NSNotificationCenter

其他:

•函數指針

• objc_msgSend

• IMP

• objc_msgSend

回調機制:http://ioswiki.sinaapp.com/index.php?doc-view-68

版權聲明:本文為CSDN部落客「weixin_34217711」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34217711/article/details/91744533