UITableViewでUISearchDisplayControllerを使用しているときにゾンビがあります。UISearchDisplayControllerでゾンビ問題が発生しました
UISearchDisplayController(およびその他のビュー)は、インターフェイスビルダー(xcode 5のストーリーボード、ARCおよびiOS 7のみを使用)を介して設定されます。
searchDisplayControllerは、私はこの
-(void)dealloc {
self.searchDisplayController.searchResultsTableView.delegate = nil;
self.searchDisplayController.delegate = nil;
self.searchDisplayController.searchBar.delegate = nil;
self.searchDisplayController.searchResultsDelegate = nil;
self.searchDisplayController.searchResultsDataSource = nil;
}
ようにdeallocメソッドでUISearchDisplayControllerをクリーンアップしようとした
# Event Type ∆ RefCt RefCt Timestamp Responsible Library Responsible Caller
0 Malloc +1 1 00:10.739.188 UIKit -[UITableView setTableHeaderBackgroundColor:]
1 Retain +1 2 00:10.739.214 UIKit -[UIView(Internal) _addSubview:positioned:relativeTo:]
2 Retain +1 3 00:10.739.234 UIKit -[UISearchDisplayController _configureSearchBarForTableView]
3 Retain +1 4 00:10.739.291 UIKit -[UIView(Hierarchy) subviews]
4 Retain +1 5 00:10.771.238 UIKit -[UIView(Hierarchy) subviews]
5 Retain +1 6 00:10.782.890 QuartzCore -[CALayer layoutSublayers]
6 Release -1 5 00:10.782.891 QuartzCore -[CALayer layoutSublayers]
7 Release -1 4 00:10.792.538 QuartzCore CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)
8 Release -1 3 00:15.446.447 UIKit -[UITableView dealloc]
9 Release -1 2 00:15.446.661 UIKit -[UIView(Internal) _invalidateSubviewCache]
10 Release -1 1 00:15.446.679 UIKit -[UIView(Hierarchy) removeFromSuperview]
11 Release -1 0 00:15.446.744 UIKit -[UITableView setTableHeaderBackgroundColor:]
12 Zombie -1 00:15.446.765 UIKit -[UISearchDisplayController _cleanUpSearchBar]
インスツルメンツは私にこの情報を与えている
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[self filterContentForSearchText:searchString scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
[self filterContentForSearchText:self.searchDisplayController.searchBar.text scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:searchOption]];
return YES;
}
これらの2つの方法で使用されています
でも動作しませんでした。
私が間違っていることを知っていますか?
ありがとうございました。
ありがとう、それは完璧に動作しますが、私は理由を理解していないと告白します。この問題の解決方法を教えてください。再度ありがとう:) – Bou
私はあなたが何を意味知っています。私はなぜそれが自分の作品を理解していない。このようなiOS 7の回避策が積み重なっています。 – BenRB
同じです...回避策は動作しますが、この問題の原因を理解したいと思います。 – GxocT