在ObjectiveC中,所有的回调都是通过Delegate实现的,例子如下:
/// Header File @interface MyClass : NSObject { id delegate; } - (void)setDelegate:(id)delegate; - (void)doSomething; @end @interface NSObject(MyDelegateMethods) - (void)myClassWillDoSomething:(MyClass *)myClass; - (void)myClassDidDoSomething:(MyClass *)myClass; @end /// Message (.m) File @implementation MyClass - (void)setDelegate:(id)aDelegate { delegate = aDelegate; /// Not retained } - (void)doSomething { [delegate myClassWillDoSomething:self]; /* DO SOMETHING */ [delegate myClassDidDoSomething:self]; } @end
并且,实际上更加标准的写法应该是用协议的概念来实现,具体的方法是在需要回调函数来处理的类中增加一个Protocol,在这个Protocol中定义回调的方法,同时在类的成员中增加一个Protocol类型变量作为委托的对象。
激发委托的时候,通过调用类的Protocol成员的回调方法来实现。具体的写法举例在这里省略。