@protocol Eat <NSObject> @required //必须实现 - (void)eat; @optional - (void)watch; //可选实现 @end
#import “eat.h” @interface Man : NSObject <Eat> @end @implementation Man - (void)eat { NSLog(@"Man eat”); } - (void)watch { NSLog(@"Man watch”); } @end
===============================
#import “eat.h” @interface Dog : NSObject <Eat> - (void)eat { NSLog(@"Dog eat"); } @end
#import “eat.h” #import “Man.h” #import “Dog.h” int main(int argc, const char *argv[]) { Man *man = [[Man alloc] init]; [man eat]; //输出 Man eat return 0; }
@interface Man : NSObject <Eat> // 声明一个指向代理对象的指针变量,遵循Eat,协议一般使用弱引用,若用强引用,会造成双向代理死锁问题
@property (nonatomic,retain) id <Eat> delegate; @end
#import “eat.h” #import “Man.h” #import “Dog.h” int main(int argc, const char *argv[]) { Man *man = [[Man alloc] init]; Dog *dog = [[Dog alloc] init]; man.delegate = dog; [man eat]; //输出 Dog eat return 0; }
原文:https://www.cnblogs.com/sunada2005/p/15101241.html