我正在製作一個應用程序,其視圖UITableView
與UISearchDisplayController
。數據來自NSFetchedResultsController
。所有工作都很好:我得到的數據,表格視圖正在填充,搜索很好。唯一的問題是,如果我搜索然後單擊「取消」(不刪除UISearchBar中的文本),然後返回到上一個視圖控制器,然後轉到與UITableView
和UISearchDisplayController
相同的視圖,它會崩潰並寫入日誌:搜索後重新加載視圖崩潰應用程序
2012-01-06 16:46:37.559 MyApp的[9586:207] *** - [SomeRandomViewController controllerWillChangeContent:]:消息發送到釋放的實例 0x778d060
我因爲這個錯誤已經搜索了並且堆棧了,試圖發佈NSFetchedResultsController
變量,確實設置了它,並且它的'deleg吃零,但沒有任何幫助。
如果我做一些搜索,然後從搜索欄中刪除文本,然後點擊「返回」,並返回到該視圖它工作得很好。
碼的位:
- (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;
}
任何幫助將不勝感激
更新
沒有殭屍輸出到日誌:
2012- 01-09 09:25:48.128丁烷[17325:207] - [UIText MagnifierTimeWeightedPoint controllerWillChangeContent:]:無法識別的選擇發送到實例0x8251dc0
更新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]
更新3
由TIA我的答案的啓發已設置FRC及其代表無searchDisplayControllerWillEndSearch
方法。作品到目前爲止好
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
self.fetchedResultsController.delegate = nil;
self.fetchedResultsController = nil;
self.searchFetchedRC.delegate = nil;
self.searchFetchedRC = nil;
[self fetchedResultsController];
}
[啓用殭屍(http://stackoverflow.com/questions/5386160/how-to-enable-nszombie-in:
我與固定它-xcode)並返回給我們。 – Joe 2012-01-06 16:23:01
http://stackoverflow.com/questions/3532861/core-data-app-crashing-with-controllerwillchangecontent-unrecognized-selector不會幫助嗎? – tia 2012-01-06 17:16:55
@tia感謝您的鏈接,但它沒有幫助 – Novarg 2012-01-09 08:19:24