C'est le code non modifié à partir de l'iPhone d'Apple de "l'Utilité Aplication" modèle:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
MainViewController *aController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
self.mainViewController = aController;
[aController release];
mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;
[window addSubview:[mainViewController view]];
[window makeKeyAndVisible];
}
Lors de l' mainViewController
est attribué à l' aController
, self
mot-clé est spécifié:
self.mainViewController = aController;
Toutefois, lorsque l' mainViewController
'image est réglée, l' self
mot-clé n'est pas nécessaire:
mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;
Si je supprime l' self
mot-clé dans le premier exemple, le programme se bloque avec le message:
objc[1296]: FREED(id): message view sent to freed object=0x3b122d0
Si j'ajoute l' self
mot-clé pour le deuxième exemple, le programme s'exécute correctement.
Quelqu'un peut-il expliquer pourquoi self
est nécessaire dans le premier cas, mais pas le second? Je suppose que dans les deux cas mainViewController
est en se référant à la même variable d'instance.