iOS 代码重构

灵活使用Category

2017-02-14  本文已影响3人  Jinfei_Chen

我们常会见到这样的写法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  

static NSString *cellIdentifier = @"CellIdentifier";  
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];  
  
if(cell == nil) {  
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];  
}  
//do something here  
return cell;  
}

这里可以运用分类进行重构:

为UITableView定义一个分类:
.h 声明文件

@interface UITableView (dequeue)  
- (UITableViewCell *)dequeueCellWithIdentifier: (NSString *)identifier;  
@end 

.m 实现文件

@implementation UITableView (dequeue)  
- (UITableViewCell *)dequeueCellWithIdentifier: (NSString *)identifier  {  
static NSString *cellIdentifier = identifier;  
UITableViewCell *cell = [self dequeueReusableCellWithIdentifier:cellIdentifier];  
if(cell == nil) {  
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];  
}  
return cell; 
}  
@end

使用的时候就是这样:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
UITableViewCell *cell = [tableView dequeueCellWithIdentifier: staticIdentifier];  
//do something here  
return cell;  
}
上一篇下一篇

猜你喜欢

热点阅读