if (!cell) {
cell = [[AddressTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:addressIdentifier];
}为什么要加个判断,写这个,什么时候会走这个判断
ここで alloc を指定しているため、判断しないと毎回新しいものが作成されます。 通常、このコードの前に次の行があります: alloc。一般在这代码之前还有一行:
alloc
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
这行就是取复用的cell的,如果能取到的话,cell就有内存,可以直接复用,取不到的话,就要自己创建了,也就是你贴出来的代码。除此之外,也可以使用注册的方式:
-(void)registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0); -(void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);
注册的话,就不需要去判断了。一般来说,这么用:
[self.tableView registerNib:[UINib nibWithNibClass:className] forCellReuseIdentifier:reuseId]; //或者 [self.tableView registerClass:className forCellReuseIdentifier:reuseId];
那么,tableView:cellForRowAtIndexPath: リーリー
tableView:cellForRowAtIndexPath:
ここで
alloc
を指定しているため、判断しないと毎回新しいものが作成されます。通常、このコードの前に次の行があります:
alloc
。一般在这代码之前还有一行:
这行就是取复用的cell的,如果能取到的话,cell就有内存,可以直接复用,取不到的话,就要自己创建了,也就是你贴出来的代码。
除此之外,也可以使用注册的方式:
注册的话,就不需要去判断了。一般来说,这么用:
那么,
この行は、再利用されたセルを取得するためのものです。取得できた場合、セルにはメモリがあり、直接再利用できます。取得できない場合は、投稿したコードです。tableView:cellForRowAtIndexPath:
リーリーさらに、次の登録方法も使用できます: 🎜 リーリー 🎜登録すれば判断する必要はありません。一般的には次のように使われます: 🎜 リーリー 🎜その後、
tableView:cellForRowAtIndexPath:
メソッドはそれ以上の判断を行う必要がなく、直接取得できます。 🎜 リーリー