在UITableViewController(实现了UITableViewDataSource)下须要实现ide
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;spa
此接口就是使用数据初始化一个Cell视图并返回,咱们能够每次建立一个新Cell,而后返回对象
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier接口
这样咱们能够在建立Cell对象的时候设置它的Style。内存
而若是是Cell重用的时候,咱们只能从tableView的cell池中获取一个Cell对象it
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath;table
这样获得的cell,是使用默认初始化方法和参数建立的,建立的过程有tableView负责,对咱们透明。class
而cell对象又没有设置style的明确接口,由于又不是在nib环境下,也不能经过IB来设置。queue
最终的解决方法是,获得的cell对象再次调用初始化方法initWithStyle,即方法
cell = [cell initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"UITableViewCell"];
总结:初始化方法并不老是跟alloc配套使用,不要造成这样的固定思惟。alloc分配了内存后,能够调用屡次初始化方法,就像随便改变一个对象的属性值同样。