应用程序商店 – 方法Swizzling合法性

是否有任何最新的信息在App Store上是否合法?

我能find的唯一数据点就是Three20框架的改变 ,从这个通知开始:

当前发布到App Store的您的应用程序xxx正在使用method_exchangeImplementations将Apple提供的API的实现与您自己的实现交换。 由于即将发生的变化,您的应用程序中的这种行为可能会导致崩溃或iPhone OS 4.0上的用户数据丢失。

xxx使用method_exchangeImplementations与你的方法ttdealloc交换dealloc的实现。 它还交换popViewControllerAnimated方法的实现:用你的方法popViewControllerAnimated2 :.

请立即解决此问题,并将新的二进制file upload到iTunes Connect。 如果我们认为这样做是谨慎或必要的,我们可能会删除您的申请。

当我四处搜寻时,我可以find关于swizzling和应用程序商店的每一个最近的对话似乎都参考了相同的Three20事件。 该通知似乎是非常具体的,我想知道这个问题是具体的变化Three20所做的更改或如果method_exchangeImplementations普遍被禁止的问题。

还有没有其他的数据说明这种做法是否被允许? 商店中是否有开发商正在使用swizzling的应用程序?

谢谢!

AFNetworking是一个用于networking请求的广泛使用的lib,使用至less1.3.4的版本来支持额外的可接受的状态代码和类方法中的内容types。

所以这似乎是合法的。

注意:他们使用class_replaceMethod而不是method_exchangeImplementations。

正常情况下,debugging将用于debugging以查看何时调用特定的方法,或者在情况下不能为其子类或使用类别。 如果您没有将应用程序放在应用程序商店上的紧张时间表,我想您可以尝试使用方法调整来发送应用程序,并查看它是否被接受。 并不是所有的应用程序都以同样的方式进行审查,有时候这只是真正由审稿人决定的。