IOS代理协议与委托
2015-10-28 23:27
302 查看
总结delegate和protocol关系拿来给大家分享一下:
把自己不想干的一些事情(洗衣做饭)找个助手来帮助你做,而你要的这个助手得有一定的能力,不是任何一个人都可以的,所以你就得有个招聘要求。协议(protocol)就类似于你的招聘要求,你找到的助手就是代理(delegate)。 这样就有了我.delegate = 助手;好了这样以后再有洗衣做饭的活直接找助手做就可以了。
协议不是类,以@protocol关键字声明, 协议有两个对象:代理者和委托者。
代理者:实现协议的某个方法。
委托者:用自己的方法制定要实现协议的方法的对象。
协议的两个预编译指令@optional:可以选择的方法。@required:必须执行的方法。
写个小例子:
把自己不想干的一些事情(洗衣做饭)找个助手来帮助你做,而你要的这个助手得有一定的能力,不是任何一个人都可以的,所以你就得有个招聘要求。协议(protocol)就类似于你的招聘要求,你找到的助手就是代理(delegate)。 这样就有了我.delegate = 助手;好了这样以后再有洗衣做饭的活直接找助手做就可以了。
协议不是类,以@protocol关键字声明, 协议有两个对象:代理者和委托者。
代理者:实现协议的某个方法。
委托者:用自己的方法制定要实现协议的方法的对象。
协议的两个预编译指令@optional:可以选择的方法。@required:必须执行的方法。
写个小例子:
协议:MyDelegte.h @protocol MyDelegate <NSObject> -(NSString *)getString; @end
// 委托类: ViewController.h #import "MyDelegte.h" @interface ViewController:UIViewController @property(nonatimic)id<MyDelegate>delegate; @end ViewController.m -(void)viewDidLoad{ SecondViewController *second = [[SecondViewController alloc]init]; self.delegate = second; // 指定代理对象second NSString *str = [self.delegate getString]; // 获得代理方法的返回值。 }
代理类: SecondViewController.h #import "SetStringDelegate.h" @interface SecondViewController:UITableBarController<SetStringDelegate> @end SecondViewController.h -(NSString *)setString{ return @"helloWorld"; }
// 简单的代理回调也可以把代理对象设置为自身,可以在自身中实现协议方法。 @protocol MyDelegte <NSObject> -(NSString *)setString; @end @protocol MyDelegate @property(nonatomic,assign)id<MyDelegate>delegate; -(NSString *)setString; @end @end
相关文章推荐
- GitHub上有很多不错的iOS开源项目
- iOS开发之各种动画各种页面切面效果
- ios9有哪些新特性?
- 大神们的微博
- ios学习之xcode编译器的浅谈
- iOS多线程的初步研究-- 锁
- iOS-字典转模型(单模型)的实现
- iOS-字典转模型(单模型)的实现
- iOS之MBProgressHUD用法总结
- 我的iOS学习历程 - OC第三天
- 我的iOS学习历程 - OC第三天
- IOS开发笔记21-ARC与分类
- IOS--导航栏
- IOS 控制系统音量
- IOS开发笔记20-OC内存管理
- iOS设计模式 - 访问者
- #在蓝懿学习iOS的日子#Day6
- 蓝懿iOS 技术内容和心得 10。28技术内容交流和心得分享
- iOS数据持久化的几种方式
- IOS开发笔记19-OC特有语法