Alors, je suis chargement par fichier et il contient XIB un ensemble de UIBarButtonItems
. Certains éléments sont utilisés lorsque le viewDidLoad:
est appelé.IBOutlets inutilisés qui fuient
@interface MyViewController : UIViewController {
IBOutlet UIBarButtonItem *addButton;
IBOutlet UIBarButtonItem *editButton;
IBOutlet UIBarButtonItem *doneButton;
}
// NB: There are no properties retaining anything.
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *initialToolbarItems =
[[NSArray alloc] initWithObjects: addButton, editButton, nil];
self.toolbarItems = initialToolbarItems;
[initialToolbarItems release];
}
- (void)dealloc {
[super dealloc];
// Nothing else to do here since we are not retaining anything.
// … or are we? <insert dramatic music here>
}
@end
Si je pousse le dessus du ViewController ci-dessus sur un tout UINavigationController semble bien, tous les IBOutlets sont assignés et se comportent comme prévu.
L'instant où j'applique le ViewController à la pile de navigation Les fuites d'instruments indiquent que je fuis un UIBarButtonItem
. Pauvre de moi!
Si je change dealloc:
à
- (void)dealloc {
[doneButton release];
[super dealloc];
}
pas de fuites se produisent. La même chose si j'utilise doneButton
dans viewDidLoad:
NSArray *initialToolbarItems =
[[NSArray alloc] initWithObjects: addButton, editButton, doneButton, nil];
Ma question: Pourquoi mon IBOutlet
fuit quand je ne l'utilise pas. Je ne le retiens à aucun moment. Le chargeur NIB devrait posséder l'objet, non?
BTW: [super dealloc]; va dernière – willcodejavaforfood
Droit vous êtes @willcodejavaforfood qui ne change pas la fuite si. –
pas juste dire :) – willcodejavaforfood