ios开发 关于委托代理小结
来源:互联网 发布:三坐标测量自动编程 编辑:程序博客网 时间:2024/05/25 23:58
以前看别人写有关委托代理之间的关系,一直搞不明白谁是委托谁是代理。今天突然顿悟了,赶紧写下来,希望也能帮助其他人,直接上代码。
第一个类,FirstViewController。
.h文件:
#import <UIKit/UIKit.h>
#import "SecondViewController.h"
@interface FirstViewController :UIViewController
<SecondViewDelegate>
{
SecondViewController* _second;
}
@property(nonatomic,retain)SecondViewController* second;
@end
- (IBAction)pressButton:(id)sender {
[self.navigationControllerpushViewController:_secondanimated:YES];
NSLog(@"press button");
}
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view from its nib.
_second = [[SecondViewControlleralloc]init];
_second.delegate =self;
}
#pragma mark delegate
-(void)passValue:(id)arg
{
NSLog(@"%@",arg);
}
#import <UIKit/UIKit.h>
@protocol SecondViewDelegate;
@interface SecondViewController :UIViewController
{
id<SecondViewDelegate>__unsafe_unretained _delegate;
}
@property(assign)id<SecondViewDelegate>delegate;
@end
@protocol SecondViewDelegate <NSObject>
-(void)passValue:(id)arg;
@end
.m文件- (IBAction)pressButton:(id)sender {
[self.navigationControllerpopViewControllerAnimated:YES];
}
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view from its nib.
[self.delegate passValue:@"Just do it"];
}
- 以上代码实现的功能是:First的View上有一个按钮,在点击First push到 Second时, 执行passValue:方法,此时Second把参数"Just do it"传递过来,从而在First中打印出来。
- 所谓的委托代理就是,委托者“SecondViewController“委托它的代理者”FirstViewController“实现-(void)passValue:(id)arg;方法。此方法是在SceondViewController中声明的,但是要是FirstViewController中实现,所以SecondViewController就是委托者,FirstViewController就是代理者。并且达到传递参数的效果。
- 因为用的ARC模式所以要这样声明id<SecondViewDelegate>__unsafe_unretained _delegate; 不然会报错。
- 那么在First中怎么样控制passValue:方法什么时候执行呢。这个就要看[self.delegate passValue:@"Just do it"]在Second中哪个函数里了,等运行到包含[self.delegate passValue:@"Just do it"]时,First中passValue:就会执行。
- ios开发 关于委托代理小结
- 关于iOS 委托 代理 协议 的理解
- ios软件开发委托代理实现介绍
- IOS -- UITextFieldDelegate委托代理
- IOS委托代理代码
- iOS:且说委托代理
- ios 开发之协议,非正式协议,委托(代理)区别
- 【iOS-开发】:delegate(委托、代理)模式的设置方法
- 自学iOS开发系列----OC(协议和委托代理)
- IOS代理协议与委托
- iOS-代理委托的使用
- iOS-代理委托的使用
- IOS代理协议与委托
- iOS 代理委托设计模式
- iOS开发中关于UIApplication的代理
- 关于IOS的委托
- IOS-关于委托
- ios开发笔记--关于delegate(委托)的使用心得
- UI -- UIPickerView选取器
- Cocos2d-x 2.x设置竖屏方法 android ios
- linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet
- inline const #define
- DCT变换和量化
- ios开发 关于委托代理小结
- eclipse 快捷键
- 静态库和动态库的区别
- hadoop 添加kerberos认证
- linux设备驱动归纳总结(七):1.时间管理与内核延时
- 使用Autobahn的订阅/发布模式
- uva 1494 - Qin Shi Huang's National Road System(次小生成树类似问题)
- Notification的用法
- rtsp解析