Я представляю табличное представление в модальном контроллере представления, созданном с помощью следующего кода (http://stackoverflow.com/questions/4471289/how-to-filter-nsfetchedresultscontroller-coredata-with-uisearchdisplaycontroll), поэтому я могу использовать Core Data, NSFetchedResults и UISearchbar. Наконец-то у меня все хорошо работает в табличном представлении/поиске/подробном представлении, но я только что обнаружил демонстрацию, которую, похоже, не могу понять.
Когда я отклоняю табличное представление, используя:
- (IBAction)doneButtonPressed:(id)sender {[self dismissModalViewControllerAnimated:YES];}
модальное представление закрывается, загружается основное представление, а затем приложение аварийно завершает работу. Это заходит достаточно далеко, чтобы я мог вызвать этот nslog из основного контроллера представления:
-(void) viewDidAppear:(BOOL)animated { NSLog(@"do I crash");}
Я получаю ошибку плохого доступа здесь:
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));}}
Я считаю, что проблемы могут быть связаны между собой. Шаблон кода, который я использовал, не был предназначен для дуги, поэтому я внес следующие изменения:
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSFetchedResultsController *fetchedResultsController;
to
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, strong, readonly) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSFetchedResultsController *searchFetchedResultsController;
@property (nonatomic, retain) UISearchDisplayController *mySearchDisplayController;
to
@property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, strong) NSFetchedResultsController *searchFetchedResultsController;
@property (nonatomic, strong) UISearchDisplayController *mySearchDisplayController;
Кроме того, я удалил следующее из didreceivememorywarning:
[fetchedResultsController_ release];
[searchFetchedResultsController_ release];
и изменил следующее в - (NSFetchedResultsController *)fetchedResultsController
return [[fetchedResultsController_ retain] autorelease];
to
return fetchedResultsController;
а в - (NSFetchedResultsController *)searchFetchedResultsController
return [[searchFetchedResultsController_ retain] autorelease];
to
return searchFetchedResultsController;
Я совершенно озадачен. Будем очень благодарны любой помощи!