我正在应用中实现日历功能。当日历类Calendar.m出现时,我调用一个函数来启动另一个函数(CalendarArrayHandler.m),该函数将使用以下代码处理解析:
CalendarArrayHandler *caller = [[CalendarArrayHandler alloc] init];
[caller performSelectorInBackground:@selector(mergeCalendars:) withObject:calendarUrlArray];
CalendarArrayHandler.m-Class然后启动解析和许多其他东西来解释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-class中)接收NSMutableArray(成功),它将在displayCalendar-function的屏幕上绘制。使用
调用此函数[self performSelectorOnMainThread:@selector(displayCalendar) withObject:nil waitUntilDone:NO];
在这里出现问题,UIview和标签将不会显示在屏幕上。我尝试使用IBAction调用displayCalendar-function并且它工作正常,但是当我从Calendar.m-class外部调用load函数时我无法工作,即使使用performSelectorOnMainThread调用displayCalendar-function也是如此-function。
我希望你能理解我的问题,看看它为什么不起作用。