24

App Store 上是否有任何关于方法调配是否合法/非法的最新信息?

我能找到的唯一数据点是前一段时间对Three20 框架的改组,它从这个通知开始:

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

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

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


当我四处寻找时,我能找到的每一个关于 swizzling 和应用商店的最近对话似乎都引用了相同的 Three20 事件。该通知似乎非常具体,我想知道问题是否是 Three20 所做更改的特定更改问题,或者 method_exchangeImplementations 是否被普遍禁止。

关于是否允许这种做法,还有其他数据点吗?商店中是否有使用 swizzling 的应用程序开发人员?

谢谢!

4

2 回答 2

8

AFNetworking 是一个广泛用于网络请求的库 (IMO),它使用 swizzling 到至少 1.3.4 版本以支持其他可接受的状态代码和类方法中的内容类型。

因此,这样做似乎是合法的。

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

于 2013-02-06T15:21:49.633 回答
1

通常 swizzling 用于调试以查看何时调用特定方法,或者在您无法子类化某些内容或为其使用类别的情况下。如果您在将应用程序放到应用商店时没有紧迫的时间表,我想您可以尝试使用方法 swizzling 发送您的应用程序,看看它是否被接受。并非所有申请都以相同的方式进行审核,有时这完全取决于审核者。

于 2012-06-27T13:34:04.533 回答