خطأ مشترك UIApplication: يبدو أن البرنامج يصل إلى ملف خاطئ
-
21-09-2019 - |
سؤال
في تطبيق 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
}
}
أستمر في الحصول على رسالة الخطأ "-[myapplicationAppDlegate Switch1]: تم إرسال محدد غير معترف به إلى مثيل. إنهاء التطبيق بسبب استثناء غير معروف"
المحلول
[uiapplication sharedapplication] مندوب] ؛ ستعيد دائمًا مثيل (المفرد) MyApplicationAppDelegate
الفصل ولا يمكنك ببساطة إلقاءه على FlipsideViewController*
. للوصول إلى قيمة FlipsIdeController (على افتراض أنه تم تخزينه في AppDelegate الخاص بك) يمكنك تحديد خاصية والاتصال بها:
-(void)somemethod{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = appDelegate.flipsideController;
}