setSearchDisplayController是否考虑过private-API?

时间:2010-06-17 06:58:40

标签: iphone

我最近提交了一个应用评论应用,但由于使用了私有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”。我基于给定here的示例搜索UITableView。那么有人可以解释为什么这被认为是私有API吗?

3 个答案:

答案 0 :(得分:1)

文档中的任何地方都提到-setSearchDisplayController:(我认为不是)? 如果不是那么它就不是公共API。

您必须使用-performSelector:withObject:并且无法直接调用它的事实是另一个赠品。 -setSearchDisplayController显然不包含在任何头文件中。

答案 1 :(得分:0)

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

是一个私人API调用,它可能导致Apple拒绝应用,我知道因为它发生在我正在处理的应用中。

答案 2 :(得分:0)

来自Apple的UIViewController doc:

  

@property(nonatomic,readonly,retain)UISearchDisplayController   * searchDisplayController
此属性反映您在Interface Builder中设置的searchDisplayController插座的值。如果   你以编程方式创建搜索显示控制器,这个   属性由搜索显示控制器自动设置   已初始化。