setSearchDisplayController считается private-API?

Я недавно отправил приложение на рассмотрение, но получил отказ из-за использования частного API. Я все еще немного новичок в разработке iPhone, поэтому мне было интересно, кто-нибудь может помочь мне понять, как эта часть была отклонена:

UISearchBar *searchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 0)] autorelease];
searchBar.showsCancelButton = NO;
searchBar.placeholder = @"Search Exhibitors";
[searchBar sizeToFit];

[self.tableView setTableHeaderView:searchBar];

UISearchDisplayController *searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];  

[self performSelector:@selector(setSearchDisplayController:) withObject:searchDisplayController];

[searchDisplayController setDelegate:self];  
[searchDisplayController setSearchResultsDataSource:self];  
[searchDisplayController setSearchResultsDelegate:self];
[searchDisplayController release];

Часть, которую они упомянули, была "setSearchDisplayController". Я основал поиск UITableView на приведенном здесь примере. Так может кто-нибудь объяснить, почему это считается частным API?

3 ответа

Является -setSearchDisplayController: упоминается где-либо в документации (я не думаю, что это так)? Если это не так, то это не публичный API.

Тот факт, что вы должны использовать -performSelector:withObject: и не могу назвать это напрямую, это еще одна дешевая распродажа. -setSearchDisplayController очевидно, не входит ни в какие заголовочные файлы.

Из документа Apple UIViewController:

@property (неатомный, только для чтения, сохранить) UISearchDisplayController *searchDisplayController
Это свойство отражает значение выхода searchDisplayController, которое вы установили в Интерфейсном Разработчике. Если вы создаете свой контроллер отображения поиска программно, это свойство автоматически устанавливается контроллером отображения поиска при его инициализации.

[self performSelector:@selector(setSearchDisplayController:) withObject:searchDisplayController];

Это частный вызов API, и он может вызвать отказ приложения от Apple, я знаю, потому что это произошло с приложением, над которым я работаю.

Другие вопросы по тегам