OC10_代理反向传值
// // ProtectedDelegate.h // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> @protocol ProtectedDelegate <NSObject> - (void)bark; @end // // Dog.h // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> #import "ProtectedDelegate.h" #import "Person.h" @interface Dog : NSObject <ProtectedDelegate> @property (nonatomic)Person *master; @end // // Dog.m // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "Dog.h" @implementation Dog - (void)bark { NSLog(@"Wang wang wang ..."); [self.master report:arc4random()%100+1]; } @end // // Person.h // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> #import "ProtectedDelegate.h" @interface Person : NSObject @property (assign, nonatomic) id <ProtectedDelegate>delegate; - (void)go; - (void)report:(NSInteger)count; @end // // Person.m // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "Person.h" @implementation Person - (void)go { [self.delegate bark]; } - (void)report:(NSInteger)count { NSLog(@"killed %li people",count); } @end
// // main.m // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" #import "Dog.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *xiaoXin = [[Person alloc] init]; Dog *dog = [[Dog alloc] init]; xiaoXin.delegate = dog; dog.master = xiaoXin; [xiaoXin go]; } return 0; }