2015-05-06 7 views
0

У меня есть это:filteredArrayUsingPredicate поднимает EXC_BAD_ACCESS на iPhone5 не на iphone6 ​​

// self.theWholeEventsArray is NSMutableArray * populated properly after segue 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy/MM/[email protected]:mm"]; 

NSDate *startDate = [dateFormatter dateFromString:@"2015/05/[email protected]:00"]; 
NSDate *endDate = [dateFormatter dateFromString:@"2015/06/[email protected]:00"]; 

NSPredicate *tmpPred = [NSPredicate predicateWithFormat:@"(%K => %@) AND (%K =< %@)", @"dateOfTheEvent", startDate, @"dateOfTheEvent", endDate]; 

NSArray *selectedDateArray = [self.theWholeEventsArray filteredArrayUsingPredicate:tmpPred]; 

Он отлично работает на iphone6 ​​и IPad, но падает с EXC_BAD_ACCESS кодом = 1 на iPhone5 и iPhone4S. Я тоже вижу проблему с симулятором и устройством. Кто-нибудь может объяснить мне, почему и как решить эту проблему?

+0

Привет, он отлично работает в симуляторе iPhone5. Не могли бы вы вставить здесь полную ошибку. – iDeveloper

+0

Я добавил поддержку NSZombieEnabled, и я получаю эту ошибку: 2015-05-06 12: 49: 10.542 tjf [9012: 193121] *** - [__ NSDate compare:]: сообщение отправлено на освобожденный экземпляр 0x786e96c0. Я не могу понять, какой объект 0x786e96c0. Очевидно, он меняется каждый раз ... – scsedel

+0

Я не уверен, почему это происходит на некоторых устройствах, а не на других, если iOS не запускает предупреждения о памяти на более низких устройствах с меньшим количеством mem. Сообщение о сбое ясно: кажется, что где-то в вашем массиве объекты 'NSDate' выпускаются до того, как они будут. Я предполагаю, что у вас есть загрузка пользовательских объектов 'Event', у которых есть свойство date? Если да, то сколько вы храните в памяти в любой момент? –

ответ

0

В моем классе событий было свойство dateOfTheEvent, объявленное как (nonatomic, **assign**), поэтому оно не хранилось в контроллере вида назначения после segue.