iOS 应用提交:该应用正在使用私有 API:_tableView

Posted

技术标签:

【中文标题】iOS 应用提交:该应用正在使用私有 API:_tableView【英文标题】:iOS app submission: The App is using a private API: _tableView 【发布时间】:2013-08-26 07:46:57 【问题描述】:

我们已向应用商店提交了一个应用,Apple 向我们发送了一份评论说明

应用程序使用私有 API:_tableView

我已经在我的代码中进行了测试。我不确定苹果到底要求我们改变什么。

我刚刚使用https://github.com/shiki/STableViewController 拉动刷新。请尽快帮助我。

【问题讨论】:

【参考方案1】:

确定whether your app uses Private APIs 的过程可能并不像您想象的那么简单。

苹果可以falsely identify your app as containing Private API usage, even when it doesn't。

如果您编写的代码与 Apple 框架中的代码存在命名冲突,就会发生这种情况。我想知道 Apple 进程是否没有在STableViewController.h 中陷入困境:

@property (nonatomic, retain) UITableView *tableView;

这可能不是最好的名字(尽管 table view controller 有一个 tableView 属性是有道理的),因为UITableViewController has a property with the same name。

您可以尝试简单地自己编辑STableViewController 源代码,并将该属性重命名(例如sTableView,或更独特的名称):

@property (nonatomic, retain) UITableView *sTableView;

(当然,还要重构代码以更改该属性的所有用法

【讨论】:

【参考方案2】:

我看不到 STableViewController 在哪里使用 _tableView。但是你为什么要使用它? UIRefreshControl 出了什么问题?

UIRefreshControl ios 6 xcode

【讨论】:

也许 Deniel 需要支持 iOS 5。 我会在 iOS 6 上使用 UIRefreshControl 并在导航栏或 iOS 5 上放置一个“刷新”按钮。不漂亮,但它可以工作,你不必依赖第三方代码这可能是错误的或导致您在没有意识到的情况下违反开发者条款/条件。 这并不能真正解决问题,是不是@AbhiBeckert?也许您想尝试一个维护更好的项目,例如:cocoacontrols.com/controls/isrefreshcontrol,而不是 2 年未更新的项目。 我们的要求是Pull up for more items,所以我们使用了这个代码。 就我个人而言,我永远不会在我“需要”任何第三方库的地方发布任何 iOS 应用程序,除非该库与 iOS 捆绑在一起。我只会将 STableViewController 和 ISRefreshControl 视为示例代码,并自己实现它 - 否则在应用程序中没有拉动刷新。这样你就可以避免像这样的情况,你有一个无法轻易解决的意外问题。在我的整个职业生涯中,几乎所有使用过的第三方库最终都以错误告终。

以上是关于iOS 应用提交:该应用正在使用私有 API:_tableView的主要内容,如果未能解决你的问题,请参考以下文章

iOS 私有 api 使用:_Unwind_Resume

iOS 中不使用私有 API 的例外情况?

IOSurface - IOS 私有 API - 在后台捕获屏幕截图

如何使用私有 API 阻止 iOS 应用程序中的来电?

在我的iOS应用中添加PayPal Pod后获取UIWebview api弃用消息

私有 API 到底是啥,如果使用了一个 iOS 应用程序,为啥 Apple 会拒绝它?