Ошибка общего приложения UIApplication:программа, кажется, обращается к неправильному файлу
-
21-09-2019 - |
Вопрос
в моей реализации MainViewController мне нужно получить доступ к переменным из двух разных классов.один из классов — AppDelegate, а другой — FlipsideViewController.я получил к ним доступ через этот код:
-(void)someMethod
{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = (FlipsideViewController *)[[UIApplication sharedApplication] delegate];
затем у меня есть массив, к которому я обращаюсь из делегата моего приложения, и несколько переменных экземпляра, которые возвращают значения из экземпляра UISwitch из флипсайдвиевконтроллера:
NSMutableArray* array = [[NSMutableArray alloc] initWithArray:(NSMutableArray *)appdelegate.originalArray];
for (id element in array)
{
if ([[element attribute] isEqualToString:@"someAttribute"] && [viewController.switch1 isOn] == YES)
{
//preform function
}
}
Я продолжаю получать сообщение об ошибке «-[MyApplicationAppDelegate switch1]:нераспознанный селектор отправлен в экземпляр.завершение работы приложения из-за неперехваченного исключения"
Решение
[[UIApplication SharedApplication] делегат];всегда будет возвращать (одиночный) экземпляр MyApplicationAppDelegate
класс, и вы не можете просто привести его к FlipsideViewController*
.чтобы получить доступ к значению флипсайдконтроллера (при условии, что оно хранится в вашем делегате приложения), вы можете определить свойство и вызвать его:
-(void)somemethod{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = appDelegate.flipsideController;
}