UIKit: appelle awakeFromNib par programme?

J'ai vu ce code:

CoolButton *coolButton = [[CoolButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 60.0f, 25.0f)]; [coolButton awakeFromNib]; // ... [coolButton release]; 

CoolButton classs CoolButton UIButton . Est-il correct d'appeler awakeFromNib programme?

Quelle est la meilleure façon de le faire si je veux faire les mêmes choses qui sont faites dans -[CoolButton awakeFromNib] pour les fois que je veux créer l'object par programme, au lieu d'un file nib?

Devrais-je simplement définir une méthode et l'appeler -[CoolButton awakeFromNib] et -[CoolButton initWithFrame] ? Ou, est-il une autre méthode d'initialisation que je devrais définir qui est appelée dans les deux cas: si je crée un CoolButton programme ou à partir d'un file nib?

Non, il n'y a pas de méthode appelée à la fois pour les objects créés dans le code et les objects créés à partir d'un NIB. Vous devez écrire une méthode séparée qui contient la logique d'initialisation commune et l'appeler à la fois depuis awakeFromNib et initWithFrame:

Eh bien awakeFromNib est appelé lorsque toutes les connections entre XIB et NIB sont définies. Je crois que awakeFromNib est appelé sur un object quand il est initialisé à partir d'un file nib. Donc, si vous le créez par programme et non avec un file NIB, il n'est pas nécessaire d'appeler awakeFromNib . L'appel de initWithFrame , d'un autre côté, sonne comme le path à parcourir. Dans cette fonction, vous pouvez créer votre vue par programmation, sans avoir besoin d'un file nib. Je peux me tromper, mais je pense que initWithFrame est appelé indépendamment du fait que votre vue soit créée avec une plume ou non.