IOS-38-关于tableview中经常不被重视的错误纠正

小记:学习iOS培训了20多天,直到现在一直自学,现在在公司做项目,公司唯一也是最重要的APP,因为公司的业务基本是考这款APP实现的,当然最重要的其实是后台服务器,又名云平台,它承担了大批数据量,想想就很头痛。想说的是,做项目和平时培训、自学有很大差异的,不仅仅要实现表面的功能,还要考虑整体架构、低耦合性、封装的傻子都可以调用、可维护性(弄得界面只用tableview,方便后期添加数据嘛)、全局改变事件(比如我们的换肤功能,全局颜色风格都要改,之前的一版用的什么通知、本地存储NSUserDefaults,每个界面都写代码去判断,整的代码像一坨坨屎,而现在采用了全局单例变量,方便的很)······最想说的就是,实际项目可以让人走的很踏实。

切入正题:
1.在oc语言中,static是很少见的,下面这种用法大街上满地都是,但不建议这样用的,因为被static修饰的量在整个程序死掉时才会销毁,而且每进入一次这个方法,static修饰的量就会+1一次:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    **static** NSString *CellIdentifier = @"PersonInfoCell";
    //初始化cell并指定类型
    PersonInfoCell *cell = (PersonInfoCell *)[self.personTableView dequeueReusableCellWithIdentifier:CellIdentifier];//复用cell,一般要重写这个方法的,否则cell有很多的话,不断创建新cell估计程序就崩了
    if (cell == nil) {
        NSArray *cellnNibs = [[NSBundle mainBundle] loadNibNamed:@"PersonInfoCell" owner:self options:nil];
        if (cellnNibs) {
            cell =  (PersonInfoCell *)[cellnNibs firstObject];
        }
    }

    [self.personTableView setSeparatorInset:(UIEdgeInsetsMake(0, 0, 0, 0))];//设置tableview里的cell分割线充满屏幕
return cell;
}

举个例子你也许更明白:

对于static修饰的变量

#import "SecondViewController.h"

static int count;

@implementation SecondViewController;

.......

-(void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

     NSLog(@"viewWillAppear is %d",count);

    count+=1;

}

这样你每进入一次界面就会发现count加1

除非程序完全退出重启,count才会清除,objective-c中用static修饰的变量和java中的静态变量是有区别的,其不能通过类名直接访问,当然你想直接访问也是能实现的在.m中写一个类方法反回count就行了,而且其作用域是其本类,不能扩展到其他类中

有物联网兴趣的童鞋,请加IOT-物联民生 QQ群:470364131

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOT_Elon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值