如何在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:或者我的定义是错误的?
我会很感激任何帮助。
答
我相信Apple会在二进制文件中执行一个简单的字符串搜索来检查私有选择器。这意味着任何字符串connectionDidDisconnect:
的使用都可能导致Apple拒绝您的应用程序。检查
的一种方式,如果Twilio库包含一个特定的字符串是从终端使用strings
工具:
$ strings Twilio.dll | grep connectionDidDisconnect
我无法找到字符串'connectionDidDisconnect'在任何苹果的公共或私人共享iOS 6.0 SDK中的库。 –