和果子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于优化
除了之前用单例模式把数据放在一个类中的优化之外,今天又总结了其他几种关于tableView的一些优化
1.label等控件
当label的公共样式属性很多的时候,我们有需要建很多label的时候,我们可以创建一个categary 把公共属性部分放在方法中 把不同的属性作为参数传进去
2.cell内容显示
cell显示内容的时候,之前我们是对cell中的每个控件依次赋值,如果这个自定义cell中有几十个控件的话,我们需要写几十行代码,显然这太繁琐了
优化前:
        cell.iconImageViwe.image = [UIImage imageNamed:stu.icon];
        cell.
nameLabel.text = stu.name;
        cell.
sexLable.text = stu.sex;
        cell.
phoneNumberLable.text = stu.phoneNumber;
        cell.
introduceLable.text = stu.introduce;
 
优化后: cell.student = stu;
 
name、sex、phoneNumber等这些都是学生对象的属性,所以我们可以把这个学生直接传给cell,
cell拿到这个学生对象以后,再把这个学生对象的各个属性赋给自己的子控件。
cell要能直接拿到这个学生对象,就需要有一个student的属性可供外界访问和赋值。然后我们需要重写这个属性的setter方法。
-(void)setStudent:(Student *)student
{
    
if (_student != student) {
        [
_student release];
        
_student = [student retain];
    }
    // 拿到这个对象以后把对象的属性赋给cell的各个子控件,那么子控件上显示相应的值
    
 self.iconImageViwe.image = [UIImage imageNamed:student.icon];
    
self.nameLabel.text = student.name;
    
self.phoneNumberLable.text = student.phoneNumber;
    
self.sexLable.text = student.sex;
    
self.introduceLable.text = student.introduce;
    
}
3.把自定义cell中的视图设为懒加载对象(该视图需要被使用的时候才会被创建)
该对象只有在被取值,即被调用它的getter方法时,对象才会被创建,所以其初始化是在getter方法中实现的,所以我们需要改写每个属性的getter方法,先判断该对象是否为空,若为空,则创建。例如:
-(UILabel *)nameLabel
{
    
if (_nameLabel == nil) {
        
_nameLabel = [[UILabel allocinitWithFrame:CGRectMake(CGRectGetMaxX(_iconImageViwe.frame) + kMargin_iconImageViwe.frame.origin.y15030)];
        
_nameLabel.backgroundColor = [UIColor cyanColor];
        [
self addSubview:_nameLabel];
    }
    
return _nameLabel;
}
posted on 2014-05-28 17:59  和果子  阅读(247)  评论(0编辑  收藏  举报