aviso initwithint, nenhum método encontrado?
-
13-09-2019 - |
Pergunta
Eu tenho um aviso e apenas não pode trabalhar para fora como para torná-lo ir embora.
Na minha .h eu tenho essa ...
-(void)restartTimer;
Então o na minha .m eu tenho ...
-(void)restartTimer{
TimerViewController *TimerView = [[TimerViewController alloc]
initWithInt:hStart
number:mStart];
Eu recebo este erro:
Atenção: não '-initWithInt: número.' método encontrado.
Eu estou certo de que é muito simples, o código ainda funciona. Se alguém pode sugerir alguma maneira de resolvê-lo que seria ótimo. Graças
Solução
-(void)restartTimer{
TimerViewController *TimerView = [[TimerViewController alloc]
initWithInt:hStart
number:mStart];
...
}
(1) deve ser TimerView
timerView
, como por Objectivo-C convenções de nomenclatura
(2) Seu TimerViewController.h deve ter uma declaração algo como:
- (TimerViewController *) initWithInt: (NSInteger) hStart number: (NSInteger) mStart;
(supondo que você quer HStart e mINÍCIO ser inteiros).
(3) Você deve importar TimerViewController.h no arquivo de implementação que o código acima aparece, direta ou indiretamente (porque ele é importado por outra coisa, potencialmente arquivo PCH do projeto).
(4) Um nome melhor para o método poderia ser:
- (TimerViewController *) initWithHStart: (NSInteger) hStart mStart: (NSInteger) mStart;
Ou algo similar -. Isto é, o método deve descrever a natureza dos argumentos que leva
Outras dicas
Isto significa que o compilador pode não encontrar um tal método em tempo de compilação. Basta incluir o cabeçalho de TimerViewController
em seu arquivo .m
.
Importar o arquivo de cabeçalho minha .h irá resolver este problema
O código ainda funciona porque Objective-C permite enviar mensagens para nil
objetos assim *TimerView
é nil
.