动态代理使用方法

iOS 码拜 7年前 (2015-05-02) 616次浏览 0个评论
 

这边说<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;
}

动态代理使用方法
50分
代理delegate是一种设计模式,oc中的代理是通过协议protocol 来表达的。从“代理”的名字上也可以窥见代理的作用,如tableview的两个代理tableviewdelegate,tableviewdatasource. 在uitableview 控件内我们将数据的提供者,及动作事件的响应者都定义为代理,自己本身没去实现,只提供了接口(交给实现代理的类来扩展), 这样uitableview就可以接收各种各样的数据源及各种各样的不同cell的展现。这就是代理的主要作用,在ios 中我们还通常将代理用于反向值传递。在下面这个帖子中有关于这部分内容的讨论:http://bbs.csdn.net/topics/390986050
动态代理使用方法
50分
这是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 所定义的方法。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明动态代理使用方法
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!