Я делаю приложение, которое имеет вид с UITableView
с UISearchDisplayController
. Данные поступают от NSFetchedResultsController
. Все работает нормально: я получаю данные, заполняется табличный вид, поиск отлично работает. Единственная проблема заключается в том, что если я нахожу поиск и затем нажимаю «Отмена» (не удаляя текст из UISearchBar), а затем возвращаюсь к предыдущему контроллеру представления, а затем перехожу в тот же вид с UITableView
и UISearchDisplayController
, он сбрасывается, журнал:Перезагрузка просмотра после поиска приводит к сбою приложения
2012-01-06 16: 46: 37,559 MyApp [9586: 207] *** - [SomeRandomViewController controllerWillChangeContent]: сообщение, отправленное высвобождены например 0x778d060
I 'go googled и stackoverflowed для этой ошибки, попытался освободить переменную NSFetchedResultsController
, установил ее и ее' делегат ел до нуля, но ничего не помогает.
И если я сделаю поиск, удалите текст из строки поиска, а затем нажмите «Назад» и вернитесь к этому виду, это работает отлично.
Немного кода:
- (void)viewDidUnload {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
self.fetchedResultsController = nil;
self.searchFetchedRC = nil;
[super viewDidUnload];
}
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
self.fetchedResultsController = nil;
[self fetchedResultsController];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
self.searchDisplayController.searchBar.text = @"";
self.searchDisplayController.active = NO;
[self searchDisplayControllerWillEndSearch:self.searchDisplayController];
return YES;
}
Любая помощь будет оценена
Update
Без зомби выход к сруба:
2012- 01-09 09: 25: 48.128 Бутан [17325: 207] - [UIText MagnifierTimeWeightedPoint controllerWillChangeContent]: непризнанные селектор направлен например 0x8251dc0
Update метод 2
Dealloc:
- (void)dealloc {
[self.mySearchDisplayController release];
self.mySearchDisplayController.delegate = nil;
self.mySearchDisplayController = nil;
[self.fetchedResultsController release];
self.fetchedResultsController.delegate = nil;
self.fetchedResultsController = nil;
[self.searchFetchedRC release];
self.searchFetchedRC.delegate = nil;
self.searchFetchedRC = nil;
[self.tableView release];
[textView release];
self.tableView = nil;
self.tableView.delegate = nil;
[super dealloc];
}
mySearchDisplayController = UISearchDisplayController
fetchedResultsController and searchFetchedRC = NSFetchedResultsControllers
tableView = UITableView
textView = [HPGrowingTextView][1]
Update 3
Вдохновленный ответа Тиа I мы установили FRC и их делегатов в. 210. Работает до сих пор так хорошо
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
self.fetchedResultsController.delegate = nil;
self.fetchedResultsController = nil;
self.searchFetchedRC.delegate = nil;
self.searchFetchedRC = nil;
[self fetchedResultsController];
}
[Enable зомби] (http://stackoverflow.com/questions/5386160/how-to-enable-nszombie-in -xcode) и вернуться к нам. – Joe
http://stackoverflow.com/questions/3532861/core-data-app-crashing-with-controllerwillchangecontent-unrecognized-selector не поможет? – tia
@tia спасибо за ссылку, но это не помогает – Novarg