Because the prototype cell is defined in a storyboard, the dequeueReusableCellWithIdentifier: method always returns a valid cell. You don’t need to check the return value against nil and create a cell manually. 可是,同样,我在官网上看到的示例代码却判断了是否为nil,如下所示: UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@”MyIdentifier”]; 这是自相矛盾?如何理解? |
|
10分 |
如果是使用 registerClass, registerNib 由系统来托管cell的创建的话,是不需要判断的。registerClass: registerNib:方法会告知tableview当cell重用失败时是通过何种方式来创建cell 的。 但如果不是使用这两个方法来创建的,则如例子上显示的,需要自己判断cell是否为nil.
|
10分 |
有两组API:
– (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; – (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); 如果你用第一个API,是需要自己创建cell的,也就是cell有可能为nil;如果你用第二个API,则不可能为nil,因为系统会优先重用,如果没有可重用的,则会自动创建一个cell,要使用这个API的话,你要先注册: |