Y a-t-il une raison de modifier le file main.m dans vos applications iOS?

J'essaie de mieux comprendre le but de chaque file contenu dans une application iOS de base.

Y a-t-il une raison de modifier le file main.m? Je me request si ce file doit être touché. Si vous le modifiez, pourquoi?

Dans 99,9% des cas, il n'est pas nécessaire de toucher main.m

Dans l'autre 0,1%, vous pourriez vouloir changer les arguments de l'appel à la fonction UIApplicationMain() . Les deux derniers arguments de cette fonction spécifient les noms des classs qui représentent votre application principale ( UIApplication par défaut) et le délégué de l'application.

Si jamais vous décidez de sous- UIApplication , vous devez définir le troisième argument au nom de votre sous-class. La sous-class UIApplication peut être utile si vous souhaitez intercepter certains events sendEvent: votre application (override sendEvent: .

Le nom de votre class de délégué d'application peut changer si vous décidez simplement de renommer cette class. En outre, si le quasortingème argument de UIApplicationMain() est nil (ce qui est la valeur par défaut dans les templates de projet qui n'utilisent pas Storyboarding dans iOS 5), cela signifie que vous créez votre object délégué dans le file NIB principal de votre application. Si jamais vous décidez de changer cette décision (par exemple, pour adapter Storyboarding à un projet existant), vous devrez changer le quasortingème argument pour indiquer à UIApplicationMain() le nom de la class qu'il doit instancier.

Dans certains cas, vous pouvez vouloir modifier ce file. Par défaut, les templates de développement iOS supposent que vous utiliserez Interface Builder pour fournir votre interface initiale, et ce avec la présence d'une valeur nulle comme dernier argument de UIApplicationMain() , comme dans l'exemple suivant:

 return UIApplicationMain(argc, argv, nil, nil); 

Si vous souhaitez créer votre interface par programme, vous devrez peut-être spécifier votre class de délégué d'application en utilisant ce dernier paramètre:

 return UIApplicationMain(argc, argv, nil, NSSsortingngFromClass([SPAppDelegate class])); 

C'est ainsi que l'application sait par où commencer dans la construction de votre interface. Avec un construit à l'aide d'Interface Builder, vous indiquez le file IB à utiliser comme base via l'une de vos keys Info.plist.

Si vous avez un file main.m créé avant le comptage automatique des references, vous pourriez avoir un NSAutoreleasePool explicite qui encapsule cette fonction:

 NSAutoreleasePool *pool = [NSAutoreleasePool new]; int retval = UIApplicationMain(argc, argv, nil, NSSsortingngFromClass([SPAppDelegate class])); [pool release]; return retval; 

Sous ARC, ceci serait converti en @autoreleasepool :

 @autoreleasepool { int retVal = UIApplicationMain(argc, argv, nil,NSSsortingngFromClass([SPAppDelegate class])); return retVal; } 

Ce sont les deux seuls cas où j'ai édité le file main.m en aucune façon.

Généralement, vous n'avez pas besoin de toucher ce file. C'est tout le code standard. Toute initialisation est normalement effectuée dans le délégué de votre application.