@protocol
Button.h
@protocol ButtonClick <NSObject>
@required
-(void)onClick:(id)sender;
@optional
-(void)optionMethod;
@end
@interface DefaultClickDelegate : NSObject<ButtonClick>
@end
@interface Button : NSObject
@property(nonatomic,retain) id<ButtonClick> ClickDelegate;
-(void)Click:(id)sender;
@end
Button.m
@implementation Button
@synthesize ClickDelegate;
-(void)Click:(id)sender{
if(ClickDelegate)
{
[ClickDelegate onClick:sender];
}
}
@end
@implementation DefaultClickDelegate
-(void)onClick:(id)sender{
NSLog(@"click");
}
@end
#import "Student.h"
#import "Button.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
DefaultClickDelegate *delegate=[[DefaultClickDelegate alloc] init];
Button* btn=[[Button alloc] init];
btn.ClickDelegate=delegate;
[btn Click:nil];
}
return 0;
}