В UIViewController documentation о свойстве searchDisplayController 1 говорится:
Если вы программным образом создаете свой контроллер отображения поиска, это свойство автоматически устанавливается контроллером дисплея поиска, когда оно инициализируется.
И когда я создаю свой UISearchDisplayController таким образом:
[[[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self] autorelease];
-[UIViewController searchDisplayController] не nil. Однако он завершается после завершения цикла событий, что приводит к тому, что контроллер отображения не отображается, когда я касаюсь панели поиска. Ничего не происходит. Это очень странно. Если я опускаю вызов autorelease, все работает:
[[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
Однако утечка UISearchDisplayController (я проверил это с помощью инструментов). Поскольку свойство searchDisplayController помечено как (nonatomic, retain, readonly) Я ожидаю, что он сохранит UISearchDisplayController после его установки.