UIViewController не сохраняет свой программно созданный UISearchDisplayController

В в документации UIViewController о свойстве searchDisplayController 1 говорится:

Если вы создаете контроллер отображения поиска программно, это свойство устанавливается автоматически контроллер дисплея поиска, когда он инициализирован.

И когда я создаю свой UISearchDisplayController следующим образом:

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

- [UIViewController searchDisplayController] не равно nil . Однако он обнуляется после завершения цикла событий, что приводит к тому, что контроллер отображения поиска не отображается, когда я касаюсь внутри панели поиска. Ничего не вылетает. Это очень странно. Если я опущу вызов autorelease , все будет работать:

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

Однако утечка UISearchDisplayController (я проверил это с помощью Instruments). Поскольку свойство searchDisplayController помечено как (неатомарно, сохранять, только для чтения) , я ожидаю, что оно сохранит UISearchDisplayController после его установки.

Эта статья о stackoverflow связана.

30
задан Cœur 25 March 2019 в 16:39
поделиться