私のヘッダーには、以下に示すように 2 つのプロパティがあります。
@interface HZCalendarDataSource : NSObject
@property (strong, nonatomic) NSMutableArray *datesOnCalendar;
@property (strong, nonatomic) HZCalendarDay *currentDay;
@end
次に、私の実装のイニシャライザには、次のコード行があります。
- (id)init {
self = [super init];
if (self) {
// Alloc / Init instance variables.
self.datesOnCalendar = [[NSMutableArray alloc] init];
self.currentDay = [[HZCalendarDay alloc] init];
HZCalendarDay *date = [[HZCalendarDay alloc] initOnDate:today withEventStore:self.eventStore];
[self.datesOnCalendar addObject:date];
// THIS line causes the app to freeze!
// If this line is above [self.datesOnCalendar addObject:date];
// Then it does not freeze. Why does this happen?
self.currentDay = date;
}
return self;
}
私が抱えている問題は、コメントに示されているように、このself.currentDay = date;
行がデバイス上のアプリをフリーズさせることです。ただし、self.currentDay = date;
日付オブジェクトが に追加されている行の上に行を移動するNSMutableArray
と、コードは正常に機能します。
だから私の質問は、なぜこの順序が重要なのですか? 正しいオブジェクトに追加したself.currentDay
のと同じオブジェクトを参照するように設定する必要がありますか?date
NSMutableArray
よくわからないので誰か教えていただけるとありがたいです。順序はあまり重要ではないので、今のところ、日付オブジェクトを配列に追加する前に実行されるように面倒な行を移動しましたが、教育目的で、これが最初に問題になる理由を知りたいです場所。
編集:
アプリをしばらくフリーズさせた後、[HZCalendarDateSource setCurrentDay:] を 25,827 回呼び出した後、最終的に Xcode で失敗しました。デバッガーの EXC_BAD_ACCESSS と -[__NSArrayM countByEnumratingWithState:objects:count:]; で失敗しました。
お役に立てれば。
ありがとう!