30

プロパティ1に関するUIViewController ドキュメントでは、次のように述べています。searchDisplayController

検索ディスプレイ コントローラーをプログラムで作成する場合、このプロパティは、初期化時に検索ディスプレイ コントローラーによって自動的に設定されます。

そして、このように UISearchDisplayController を作成すると:

[[[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self] autorelease];

-[UIViewController searchDisplayController]ありませんnil。ただし、イベント ループが終了すると無効になるため、検索バー内をタッチしても検索ディスプレイ コントローラーが表示されません。何もクラッシュしません。これは非常に奇妙です。への呼び出しを省略するとautorelease、すべてが機能します。

[[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];

ただし、リークしますUISearchDisplayController(Instrumentsでこれを確認しました)。searchDisplayController プロパティ(nonatomic, retain, readonly)は、設定後も保持されると予想されるため、マークされてUISearchDisplayControllerいます。

このスタックオーバーフローの記事は関連しています。

4

2 に答える 2

3

上記の解決策は問題なく機能しますが、使用できることもわかりました

[self setValue:mySearchDisplayController forKey:@"searchDisplayController"]

UIViewControllerサブクラスのコンテキストで。

于 2012-03-28T21:33:17.620 に答える