0

アプリにカレンダー機能を実装しています。カレンダー クラス 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 クラスにあります) は、displayCalendar 関数で画面に描画される NSMutableArray を (正常に) 受け取ります。この関数は

[self performSelectorOnMainThread:@selector(displayCalendar) withObject:nil waitUntilDone:NO];

ここで問題が発生し、UIviews とラベルが画面に表示されません。IBAction で displayCalendar-function を呼び出してみましたが、正常に動作しますが、displayCalendar-function が performSelectorOnMainThread で呼び出されても、Calendar.m-class の外部から load 関数を呼び出すと動作しません。 -関数。

私の問題を理解し、なぜうまくいかないのかを理解していただければ幸いです。

4

0 に答える 0