Objective C Protocol implementation

protocol 类似于接口,可以实现函数的回调

@protocol MyDelegate<NSObject>
-(void)myCallbackFunction;
@end


//Caller 添加一个delegate 的property:
//.h文件
@property (nonatomic,weak) id <MyDelegate> mDelegate;
//caller的函数中就可以调用
//.m文件
@synthesize mDelegate;

[self.mDelegate myCallbackFunction]; 

//Callee:
//.h文件
@interface Caller : NSObject <MyDelegate>
//.m文件
[caller setValue:self forKey:@"mDelegate"];

//然后就可以在callee文件中写myCallbackFunction的implementation了。
-(void)myCallbackFunction{
    
}