我最近提交了一个应用评论应用,但由于使用了私有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吗?
答案 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插座的值。如果 你以编程方式创建搜索显示控制器,这个 属性由搜索显示控制器自动设置 已初始化。