Je ne sais pas ce qui se passe ici, mais je le code suivant dans ma méthode init:appelant la méthode 'subviews de sur les augmentations de contentView d'une cellule de retenir le nombre
NSLog(@"retain count in init before alloc: %d", [game1CustomEntityInfoControl retainCount]);
game1CustomEntityInfoControl = [[CustomEntityInfoControl alloc] initWithFrame:CGRectZero];
NSLog(@"retain count in init after alloc: %d", [game1CustomEntityInfoControl retainCount]);
[[self contentView] addSubview:game1CustomEntityInfoControl];
NSLog(@"retain count in init after adding to superview: %d", [game1CustomEntityInfoControl retainCount]);
Je sais que je devrais publierai game1CustomEntityInfoControl puisque la superview conserve l'objet mais laisse cela pour le moment.
Ensuite, dans ma méthode layoutSubviews je:
// We always call this, the table view cell needs to do its own work first
[super layoutSubviews];
NSLog(@"retain count as soon as you enter layoutSubviews: %d", [game1CustomEntityInfoControl retainCount]);
[[self contentView] subviews];
NSLog(@"retain count in layoutSubviews after calling subviews on contentView: %d", [game1CustomEntityInfoControl retainCount]);
C'est la sortie:
2010-10-24 15: 14: 08,598 Sangaku [8592: 207] conserver dans le nombre avant alloc initialisation : 0
2010-10-24 15: 14: 08,603 Sangaku [8592: 207] retenir comptage dans initialisation après alloc: 1
2010-10-24 15: 14: 08,611 Sangaku [8592: 207] retenir count dans init après l'ajout de superview: 2
2010-10-24 15: 14: 08,616 Sangaku [8592: 207] ReTain compte dès que vous entrez dans layoutSubviews: 2
2010-10-24 15: 14: 08,621 Sangaku [8592 : 207] retain count dans layoutSubviews après l'appel de sous-vues sur contentView: 3
Regardez la dernière ligne de sortie. Comment le nombre de retenue est-il passé à 3? Les sous-vues effectuent-elles en interne une allocation qui est renvoyée comme auto-libérée?
Merci
Je comprends que vous ne pouvez pas compter sur les comptes de retenue pour vous assurer que tout est bien géré. Ma question est: "Quelqu'un pourrait-il savoir si la méthode des sous-vues retourne en interne un tableau autoreleased?". Cela arrive régulièrement et je suis donc curieux. Est-ce que demander un objet à un index particulier dans un tableau retourne un objet autoreleased? Si c'est le cas, cela pourrait expliquer ce comportement. – user482393
Oh désolé d'avoir mal interprété votre question initiale. Absolument, la méthode des sous-vues retourne un tableau autoreleased. Si ce n'était pas le cas, ce serait de la mémoire. Un modèle commun que vous verrez dans le code objectif-C est return [[obj retain] autorelease]; –