UIApplication sharedAppication errore: programma sembra essere l'accesso ai file sbagliato
-
21-09-2019 - |
Domanda
nella mia implementazione MainViewController, ho bisogno di accedere alle variabili da due classi diverse. una delle classi è l'AppDelegate e l'altro è il FlipsideViewController. il modo in cui sono disponibili queste era attraverso questo codice:
-(void)someMethod
{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = (FlipsideViewController *)[[UIApplication sharedApplication] delegate];
poi ho un allineamento accedo dalla mia applicazione delegato, e alcune variabili d'istanza che restituiscono valori da un'istanza di UISwitch dal 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 a ricevere il messaggio di errore "- [switch1 MyApplicationAppDelegate]: selettore non riconosciuto inviato ad esempio di terminazione app a causa di eccezione non identificata".
Soluzione
[[UIApplication sharedApplication] delegato]; restituirà sempre la (Singleton) un'istanza della classe MyApplicationAppDelegate
e non si può semplicemente gettarlo ai FlipsideViewController*
. per accedere valore flipsidecontroller (ammesso che è memorizzato nel vostro AppDelegate) è possibile definire una proprietà e chiamarlo:
-(void)somemethod{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = appDelegate.flipsideController;
}