La question est simple: Comment vous chargez sur mesure à UITableViewCellpartir de fichiers Xib? Cela vous permet d'utiliser Interface Builder pour concevoir vos cellules. La réponse est apparemment pas simple en raison de problèmes de mémoire managment. Ce fil mentionne la question et propose une solution, mais elle est avant NDA libération et n'a pas de code. Voici un long fil qui traite de la question , sans donner une réponse définitive.
Voici un code que je l'ai utilisé:
static NSString *CellIdentifier = @MyCellIdentifier;
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Pour utiliser ce code, créez MyCell.m / .h, une nouvelle sous - classe de UITableViewCellet ajouter IBOutletsles composants que vous voulez. Ensuite , créez un nouveau fichier « vide XIB ». Ouvrez le fichier dans Xib IB, ajouter un UITableViewCellobjet, définissez son identifiant pour « MyCellIdentifier », et définir sa classe à MyCell et ajouter vos composants. Enfin, connectez le IBOutletsaux composants. Notez que nous ne l' avons pas mis propriétaire dans IB du fichier.
D'autres méthodes préconisent la mise propriétaire du fichier et mettent en garde les fuites de mémoire si le Xib n'est pas chargé par une classe d'usine supplémentaire. Je l'ai testé ci-dessus en vertu des instruments / fuites et vu aucune fuite de mémoire.
Alors, quelle est la manière canonique pour charger les cellules de Xibs? Avons-nous mis propriétaire du fichier? Avons-nous besoin d'une usine? Si oui, quel est le code de l'usine ressemble? S'il y a plusieurs solutions, clarifions les avantages et les inconvénients de chacun d'entre eux ...














