jika (!sel) {
cell = [[AddressTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:addressIdentifier];
}Kenapa kita perlu menambah penghakiman, tulis ini, bila penghakiman ini akan dibuat
Jika anda tidak menilai, yang baharu akan dibuat setiap kali, kerana anda mempunyai alloc di sini. Biasanya terdapat baris sebelum kod ini:
alloc
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Barisan ini adalah untuk mendapatkan sel yang digunakan semula Jika ia boleh diambil semula, sel itu mempunyai memori dan boleh digunakan semula secara langsung. Selain itu, anda juga boleh menggunakan kaedah pendaftaran:
-(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);
Jika anda mendaftar, anda tidak perlu menilai. Secara umumnya, ia digunakan seperti ini:
[self.tableView registerNib:[UINib nibWithNibClass:className] forCellReuseIdentifier:reuseId]; //或者 [self.tableView registerClass:className forCellReuseIdentifier:reuseId];
Kemudian, kaedah tableView:cellForRowAtIndexPath: tidak memerlukan pertimbangan tambahan, dan boleh diambil terus:
tableView:cellForRowAtIndexPath:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SomeIdentifier"]; //do something ...
Jika anda tidak menilai, yang baharu akan dibuat setiap kali, kerana anda mempunyai
alloc
di sini.Biasanya terdapat baris sebelum kod ini:
Barisan ini adalah untuk mendapatkan sel yang digunakan semula Jika ia boleh diambil semula, sel itu mempunyai memori dan boleh digunakan semula secara langsung.
Selain itu, anda juga boleh menggunakan kaedah pendaftaran:
Jika anda mendaftar, anda tidak perlu menilai. Secara umumnya, ia digunakan seperti ini:
Kemudian, kaedah
tableView:cellForRowAtIndexPath:
tidak memerlukan pertimbangan tambahan, dan boleh diambil terus: