该应用在 Payload/<Appname>.app/<App name> 中引用了非公共选择器:FailWithError: , topMostAlert

Posted

技术标签:

【中文标题】该应用在 Payload/<Appname>.app/<App name> 中引用了非公共选择器:FailWithError: , topMostAlert【英文标题】:The app references non-public selectors in Payload/<Appname>.app/<App name>: FailWithError: , topMostAlert 【发布时间】:2014-04-08 19:21:48 【问题描述】:

在 Apple Application Uploader 上出现此错误:

The app references non-public selectors in Payload/&lt;Appname&gt;.app/&lt;App name&gt;: FailWithError: , topMostAlert.

我在我的代码中搜索了FailWithError:topMostAlert。 我没有在我的代码中找到这些,除了 topMostAlert 用于解雇 UIAlertView

Class UIAlertManager = NSClassFromString(@"_UIAlertManager");
UIAlertView *alertView = [UIAlertManager performSelector:@selector(topMostAlert)];
[alertView dismissWithClickedButtonIndex:0 animated:NO];

我知道此错误是因为在您自己的代码或第三方代码中使用了与标记为非公共(Apple 提供的 API)的选择器同名的选择器。

我正在添加我的代码中使用的框架的屏幕截图。

【问题讨论】:

【参考方案1】:

您被拒绝了,因为您使用的是私有类 UIAlertManager(通过 _UIAlertManager)。更改您的代码,使其仅使用公共APIs,它将通过审核过程。

【讨论】:

我也想通了谢谢。我实际上想在显示新的 UIAlertView 之前关闭以前的 UIAlertView。这样以前的就不存在了。在 ios7 我们可以通过 UIAlertManager 做到这一点。 topMostAlert 问题已解决,但 Apple 仍显示警告 The app references non-public selectors in Payload/&lt;Appname&gt;.app/&lt;App name&gt;: FailWithError: 现在发出警告。 忽略警告。没什么。这只是意味着您的方法之一与 Apple 的名称相同。 如果我想找到那行怎么办?我想折射它。 在您的项目中进行文本搜索。记得打开搜索链接的框架。

以上是关于该应用在 Payload/<Appname>.app/<App name> 中引用了非公共选择器:FailWithError: , topMostAlert的主要内容,如果未能解决你的问题,请参考以下文章

该应用程序在 Payload/appname.app/appname 中引用了非公共选择器

Xcode5:应用程序在 Payload/<AppName>.app/<AppName> 中引用了非公共选择器: setAttribution:

应用程序加载器警告:应用程序在 Payload/<Appname>.app/<App name> 中引用了非公共选择器:changeState:

应用程序加载器警告:应用程序在 Payload/<Appname>.app/<App name> 中引用了非公共选择器:id [重复]

应用程序在 payload/appname.app/appname: _terminateWithStatus 中引用了非公共选择器

该应用在 Payload/App Name.app 中引用了非公共选择器