在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成员的回调方法来实现。具体的写法举例在这里省略。
一直以来都希望能有一个好用Todo类的软件,iCal上的确实不够好,用起来怎么都觉得别扭
