UIApplication sharedAppication error: программа, кажется, обращается к неправильному файлу - PullRequest
0 голосов
/ 16 января 2010

в моей реализации MainViewController мне нужно получить доступ к переменным из двух разных классов. один из классов - AppDelegate, а другой - FlipsideViewController. способ, которым я получил к ним доступ, был через этот код:

-(void)someMethod
{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = (FlipsideViewController *)[[UIApplication sharedApplication] delegate];

тогда у меня есть массив, к которому я обращаюсь из моего делегата приложения, и некоторые переменные экземпляра, которые возвращают значения из экземпляра UISwitch из 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
    }
}

Я получаю сообщение об ошибке "- [MyApplicationAppDelegate switch1]: нераспознанный селектор отправлен на экземпляр. Завершение работы приложения из-за необработанного исключения"

1 Ответ

2 голосов
/ 16 января 2010

[[UIApplication sharedApplication] делегат]; всегда будет возвращать (singleton) экземпляр класса MyApplicationAppDelegate, и вы не можете просто привести его к FlipsideViewController*. чтобы получить доступ к значению flipsidecontroller (при условии, что оно хранится в вашем appdelegate), вы можете определить свойство и вызвать его:

-(void)somemethod{
     MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
     FlipsideViewController *viewController = appDelegate.flipsideController;
}
...