avertissement initwithint, aucune méthode trouvée?
-
13-09-2019 - |
Question
J'ai un avertissement et ne peux pas trouver comment faire disparaître.
Dans mon .h j'ai cette ...
-(void)restartTimer;
Alors le dans mon .m je ...
-(void)restartTimer{
TimerViewController *TimerView = [[TimerViewController alloc]
initWithInt:hStart
number:mStart];
Je reçois cette erreur:
Attention: pas '-initWithInt: nombre.' Procédé trouvé.
Je suis sûr qu'il est très simple, le code fonctionne toujours. Si quelqu'un peut suggérer des façons de résoudre ce serait génial. Merci
La solution
-(void)restartTimer{
TimerViewController *TimerView = [[TimerViewController alloc]
initWithInt:hStart
number:mStart];
...
}
(1) TimerView
doit être timerView
, selon les conventions de nommage Objective-C
(2) Votre TimerViewController.h devrait avoir une déclaration quelque chose comme:
- (TimerViewController *) initWithInt: (NSInteger) hStart number: (NSInteger) mStart;
(en supposant que vous voulez être des entiers HStart et mstart).
(3) Vous devez importer TimerViewController.h dans le fichier de mise en œuvre que le code ci-dessus apparaît dans, directement ou indirectement (parce qu'il est importé par autre chose, potentiellement fichier PCH du projet).
(4) un meilleur nom pour le procédé peut être:
- (TimerViewController *) initWithHStart: (NSInteger) hStart mStart: (NSInteger) mStart;
Ou quelque chose de similaire -. À savoir, la méthode doit décrire la nature des arguments qu'il faut
Autres conseils
Cela signifie que le compilateur ne peut pas trouver une telle méthode au moment de la compilation. Il suffit d'inclure l'en-tête de TimerViewController
dans votre fichier .m
.
Importer un fichier l'en-tête mon .h va résoudre ce problème
Le code fonctionne toujours parce que Objective-C permet d'envoyer des messages à des objets nil
ainsi *TimerView
est nil
.