在上传应用到苹果应用商店时,出现警告信息。

9

我对这项技术还不熟悉。

在从“应用程序加载器”上传应用程序时,我遇到了以下警告:

警告显示:“该应用程序引用实例中的非公共选择器,在视图控制器中

请帮助我解决此警告。

提前感谢您!

编辑

图片 :-

enter image description here

编辑 :-

我的应用程序会被批准吗?


你正在使用一些私有API! - Moxy
http://stackoverflow.com/questions/10884968/apple-says-the-app-references-non-public-selectors-in-my-app-what-does-that-mea - nycynik
真正的问题是你正在调用哪个视图控制器的实例方法,这是苹果认为私有的。在我们知道这一点之前,我们无法回答;你发布的对话框图片并没有揭示它。 - Kendall Helmstetter Gelner
在几乎所有情况下,您的视图中都会有一个警告,指向您正在引用的私有API。您的控制器中有任何警告吗? - Stakenborg
1
有人建议他是否点击图片右边的“查看”(小放大镜图标)?通常这会指向这段代码的使用位置... - Miles Alden
7个回答

6
使用App Scanner。它分析您的.app文件以查找私有API方法的使用情况。它将捕获被命名为私有API方法的方法,即使它具有自己的实现。此外,它还会捕获方法内的@selectors(就像官方的iOS自动检查器一样)。
App Scanner无法捕获使用调用私有方法选择器的performSelector:的情况。但是,苹果的工具确实可以捕获该情况。
另一个替代方案是APP Kit,虽然我没有使用过。不妨试试。
如果你还没有看过,请查看这个问答:How does Apple know you are using private API?。看起来很有帮助。

当我尝试上传我的.app文件时,App Scanner应用程序崩溃了,还有其他替代方法吗? - P.J
实际上,我已经使用我的应用程序的 .app 文件进行了交叉检查,它可以正常工作。请查看更新后的答案。 - Pranav Jaiswal
+1 链接到“苹果是如何知道...”问题。KennyTM的回答是我见过的关于这个问题最好的信息。 - Nate

1

我认为你的代码中可能有一个名为instance的函数,例如:

+(id)instance{
    return something;
}

也许是单例模式的实现?如果是这种情况,只需将其重命名即可。

我曾见过一些应用程序尽管触发了类似的警报,但仍然获得了批准,但为什么要冒着被拒绝的风险呢?


1

在出现这个错误之前,你最后添加到代码中的是什么?根据我上面提供的链接,该错误意味着你有一个私有 API 调用。

如果你认为不是你的代码出了问题,那可能就是其中包含的任何代码所导致的。


我的应用程序已成功上传,但给了我这个警告,这会导致我的应用程序被拒绝吗?如果我有10个权限,我可以上传该警告图像。 - P.J
是的,它会被拒绝。如果您将其发布到免费图像服务(如imageshack)并添加链接,则可以上传该图像。 - nycynik
@iPhoneDev,您已经有足够的声誉来上传图片了。 - iDev
你能告诉我使用非公共部分的代码会在哪里吗? - P.J

1

@iPhoneDev:我猜你的应用不会因为这个原因被拒绝。因为我在我的一个应用中遇到过这个警告,但它最终被成功接受了。所以不用担心。


这是一种冒险行为...他正在使用静态分析器认定为私有的东西。 - Daij-Djan
@Daij-Djan,我刚回答了他的问题“我的应用程序会被批准吗?” 我并不支持他这样做。为什么要因此投反对票呢? - coder1010
因为即使它对你起作用了,也不能确定它对他起作用。a)这完全取决于审阅者,b)您的联系人,最重要的是c)使用了什么私有代码 - 而我们不知道他如何使用它。 - Daij-Djan
@code1010,你很可能是对的,我也会打赌,但从技术上讲,这是不可以的 :) - Daij-Djan
+1,这是你的观点...所以+1票,谢谢。 - Suresh D

1
在整个项目中搜索viewController,并查找是否有任何单例实现。 即使苹果公司批准您的应用程序,应用程序中也不应该有非公共部门。 您还可以使用App Scanner
希望这能帮到您。

0

这个几乎肯定会被拒绝。

我猜测,你可以搜索 "viewController",看看是否引用了一个私有实例方法,或者通过点符号引用了一个私有实例变量:.viewController


0

不,你的应用会被拒绝的。绝对会的。苹果审核团队使用与Xcode相同的检查,还有一些额外的检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接