2009-07-16 5 views
0

Certaines méthodes de ma classe doivent savoir combien de fois la classe a été chargée. Ai-je besoin d'un Singleton pour cela, ou y a-t-il d'autres façons de le faire? Y a-t-il des variables statiques que je peux attacher à la classe, puis les incrémenter à chaque fois que viewDidLoad? Lorsque l'application démarre, cette valeur est réinitialisée (= 0). Je ne suis pas un grand singleton-ami, puisque c'est une grosse surcharge de méthodes dans l'objectif-c;)Comment puis-je compter combien de fois une vue a été chargée depuis le démarrage de l'application?

Répondre

1

Si vous êtes après combien de fois une vue a été chargé (affiché), puis continuez à lire :)

La charge peut se produire qu'une seule fois (même si vous naviguez çà et là une forme). Si vous êtes après combien de temps une vue apparaît, créez simplement un champ statique et incrémentez sa valeur dans viewWillAppear.

static NSUInteger countAppear = 0; 

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    countAppear++; 
    NSLog(@"CountAppear %d", countAppear); 
} 
1

Par "combien de fois la classe a été chargée", je présume que vous voulez dire combien d'objets de cette classe ont été initialisés? La classe elle-même n'est chargée qu'une seule fois.

static NSUInteger numberOfInitializations = 0; 

- (id)init 
{ 
    self = [super init]; 
    if (self) 
    { 
     ++numberOfInitializations; 
     // other stuff 
    } 
    return self; 
} 

- (void)someOtherMethodThatNeedsToKnow 
{ 
    NSLog(@"Current count is %d", numberOfInitializations); 
} 

- [UIViewController viewDidLoad] peut être ce que vous voulez, mais gardez à l'esprit que les vues peuvent être débarquées si elles ne sont pas montrer quand la mémoire est courte.

Gardez également à l'esprit si vous utilisez des vues qui, si vous les chargez à partir d'un NIB, vous devez remplacer -initWithCoder :, alors que si elles sont créées par programmation c'est -initWithFrame :.

Questions connexes