如何在Apple App Loader中调试“应用程序引用非公共选择器”错误?

问题描述:

当上传我的应用程序到iTines时,我得到了“应用程序引用非公共选择器:connectionDidDisconnect:”。我如何找到哪个模块调用这样的选择器?如何在Apple App Loader中调试“应用程序引用非公共选择器”错误?

我的应用程序使用Twilio客户端库,它通过Monotouch绑定项目包装为单声道,我在此处导出connectionDidDisconnect:作为TCConnectionDelegate包装中的ConnectionDidDisconnect。

[BaseType (typeof (NSObject))] 
[Model] 
public interface TCConnectionDelegate 
{ 
    //@required 
    //some code was removed 
    /** The TCConnection has just disconnected. 
    @param connection The TCConnection has just disconnected. 
    @returns None 
    */ 
    //-(void)connectionDidDisconnect:(TCConnection*)connection; 
    [Export ("connectionDidDisconnect:")] 
    [Abstract] 
    void ConnectionDidDisconnect(TCConnection xonn); 

} 

该代码工作得很好。只有当我上传我的应用程序到iTunes时,我得到了这个错误。

是否Twilio库调用私人选择器connectionDidDisconnect:或者我的定义是错误的?

我会很感激任何帮助。

+0

我无法找到字符串'connectionDidDisconnect'在任何苹果的公共或私人共享iOS 6.0 SDK中的库。 –

我相信Apple会在二进制文件中执行一个简单的字符串搜索来检查私有选择器。这意味着任何字符串connectionDidDisconnect:的使用都可能导致Apple拒绝您的应用程序。检查

的一种方式,如果Twilio库包含一个特定的字符串是从终端使用strings工具:

$ strings Twilio.dll | grep connectionDidDisconnect 
+0

这就是我的想法。 Apple无法找到选择器所属的方法/类别。我的应用程序可执行文件包含字符串“connectionDidDisconnect:” – alecd4

+0

此字符串也在libTwilioClient.a库中,用于我从Twilio获取的ios应用程序。 connectionDidDisconnect是Twilio期望我的应用程序实现的委托中的回调函数。假设Apple会拒绝我的应用程序,这里有什么解决方案? – alecd4

+0

alecd4:也许联系Twilio,以便他们可以更改其选择器的名称? –