Erro UIApplication sharedApplication:o programa parece estar acessando o arquivo errado
-
21-09-2019 - |
Pergunta
na minha implementação MainViewController, preciso acessar variáveis de duas classes diferentes.uma das classes é AppDelegate e a outra é FlipsideViewController.a forma como acessei foi através deste código:
-(void)someMethod
{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = (FlipsideViewController *)[[UIApplication sharedApplication] delegate];
então eu tenho uma matriz que acesso do delegado do meu aplicativo e algumas variáveis de instância que retornam valores de uma instância de UISwitch do flipsideViewController:
NSMutableArray* array = [[NSMutableArray alloc] initWithArray:(NSMutableArray *)appdelegate.originalArray];
for (id element in array)
{
if ([[element attribute] isEqualToString:@"someAttribute"] && [viewController.switch1 isOn] == YES)
{
//preform function
}
}
Continuo recebendo a mensagem de erro "-[MyApplicationAppDelegate switch1]:seletor não reconhecido enviado para instância.encerrando o aplicativo devido a uma exceção não detectada"
Solução
[[UIApplication sharedApplication] delegado];sempre retornará a instância (singleton) de MyApplicationAppDelegate
classe e você não pode simplesmente lançá-lo para FlipsideViewController*
.para acessar o valor do flipsidecontroller (supondo que ele esteja armazenado em seu appdelegate), você pode definir uma propriedade e chamá-la:
-(void)somemethod{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = appDelegate.flipsideController;
}