附送小白们的调试小技巧& 在末尾
虽然iOS本身已经做过优化了,在tableView并不会真正的开辟很多空间,会让空间复用。但是CPU还是会不停的alloc,为了降低CPU损耗,就需要使用重用机制。 需要注意的是,重用是无序的,不是有序的。 1.先去缓存池中找,是否有可以重用的cell 2.如果缓存池中没有,创建一个cell,并给它一个重用标示 3.设置数据
//返回每一组的每一行显示什么内容
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// 定义一个重用标示,用static修饰。就放在了内存的静态区了。
static NSString *ID = @"A";
// 缓存池中寻找是否有可以重用的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 如果缓存池中没有ID,创建一个cell,并给它一个重用标示
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
// 设置数据,赋值给cell
return cell;
}
从iOS6.0开始,添加了缓存池的优化用法。
Paste_Image.png
一般都在viewDidLoad中提前注册
[_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"A"];
//返回每一组的每一行显示什么内容
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// 定义一个重用标示,用static修饰。就放在了内存的静态区了。
static NSString *ID = @"A";
// 缓存池中寻找是否有可以重用的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID forIndexPath:indexPath];
// 设置数据,赋值给cell
return cell;
}
- (void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier;
每次调试的时候,总是会看到一堆一堆的报错信息。很多时候都只是手贱,写错了点什么,给点提示就知道问题在哪里了。如果系统能够自动断点在出错误的地方,那就太棒了。下面这个方法就是酱紫哒~~~
Paste_Image.png
优点:
缺点: