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





你可能感兴趣的:(IOS回调机制)