我正在应用程序中实现日历功能。当日历类 Calendar.m 出现时,我调用一个函数来启动另一个函数(CalendarArrayHandler.m),该函数将使用以下代码处理解析:
CalendarArrayHandler *caller = [[CalendarArrayHandler alloc] init];
[caller performSelectorInBackground:@selector(mergeCalendars:) withObject:calendarUrlArray];
然后 CalendarArrayHandler.m 类启动解析和许多其他东西来解释 XML 文件。完成后,我使用以下代码保存 NSMutableArray:
NSData *calendarData = [NSKeyedArchiver archivedDataWithRootObject:sortedArrayToSave];
[[NSUserDefaults standardUserDefaults] setObject:calendarData forKey:@"CalendarEntries.dat"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *arrayFileName = [documentsDirectory stringByAppendingPathComponent:@"CalendarEntries.dat"];
[calendarData writeToFile:arrayFileName atomically:YES];
此时我调用 Calendar.m 类中的 loadCalendarEntriesFromFile 函数
Calendar *caller = [[Calendar alloc] init];
[caller performSelectorInBackground:@selector(loadCalendarEntriesFromFile) withObject:nil];
这个函数(现在在 Calendar.m 类中)接收 NSMutableArray(成功),它将在 displayCalendar 函数中绘制在屏幕上。这个函数被调用
[self performSelectorOnMainThread:@selector(displayCalendar) withObject:nil waitUntilDone:NO];
就是这里出了点问题,UIviews 和标签不会显示在屏幕上。我尝试使用 IBAction 调用 displayCalendar 函数,它工作得很好,但是当我从 Calendar.m 类外部调用 load 函数时,即使使用 performSelectorOnMainThread 调用 displayCalendar 函数,我也无法让它工作-功能。
我希望你能理解我的问题,看看为什么它不起作用。