动态代理使用方法

我de名字 2015-03-25 11:24:20
这边说<UITableViewDataSource,UITableViewDelegate>这个是动态代理的意思
然后下面可以重新修改里面的方法了

麻烦详细讲下原理 和过程,尤其是动态代理的用法和原理。,然后说明下下面那段代码大概是什么作用?
120分

@interface BabyReadViewController ()<UITableViewDataSource,UITableViewDelegate>



#pragma mark - TableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _mutarrDataList.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 100;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CommonCell = @"CommonCell";

UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CommonCell];

if (cell == nil)
{
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CommonCell];

UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];
lbl.tag = TAG_LABLE_NAME;
[cell.contentView addSubview:lbl];
}

BabyReadBean *bean = [_mutarrDataList objectAtIndex:indexPath.row];

UILabel *lbl = (UILabel *)[cell viewWithTag:TAG_LABLE_NAME];
lbl.text = bean.strName;





return cell;
}
...全文
204 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bannings 2015-03-25
  • 打赏
  • 举报
回复
这是delegate模式,在UIKit框架中广泛应用,除了UITableView以外,还有UITextView、UITextField、UIWebView、UIAlert、UIActionSheet、UICollectionView、UIPickerView、UIGestrueRecognizer、UIScrollView等等。 delegate 属于事件驱动的范畴,也就是只有当某一事件触发时,delegate 才被调用,因为委托者不知道谁会去处理以及怎样去处理,而且为了模块之间解耦、易维护,从而引入了delegate模式,比如你使用的TabelView,TableView本身是不知道有多少个Cell的,也不知道Cell如何展示,但是它只用知道有一个委托者已经完成了这些事就可以了。 通常,一个delegate的使用过程,需要经过五步: 1. 创建一个 delegate; 2. 委托者声明一个delegate; 3. 委托者调用delegate内的方法(method); 4. 被委托者设置delegate,以便被委托者调用; 5. 被委托者实现Delegate 所定义的方法。
ReyZhang 2015-03-25
  • 打赏
  • 举报
回复
代理delegate是一种设计模式,oc中的代理是通过协议protocol 来表达的。从“代理”的名字上也可以窥见代理的作用,如tableview的两个代理tableviewdelegate,tableviewdatasource. 在uitableview 控件内我们将数据的提供者,及动作事件的响应者都定义为代理,自己本身没去实现,只提供了接口(交给实现代理的类来扩展), 这样uitableview就可以接收各种各样的数据源及各种各样的不同cell的展现。这就是代理的主要作用,在ios 中我们还通常将代理用于反向值传递。在下面这个帖子中有关于这部分内容的讨论:http://bbs.csdn.net/topics/390986050

29,048

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧