46得票6回答
如何在Swift 3.0中实现方法交换?

我怎样在 Swift 3.0 中实现方法交换? 我已经阅读了关于此的 nshipster 文章, 但是在这段代码中struct Static { static var token: dispatch_once_t = 0 } 编译器给我一个错误 dispatch_once_t...

32得票2回答
如何在iOS上交换类方法?

方法交换对实例方法非常有效。现在,我需要交换一个类方法。有什么想法吗? 我尝试了这个方法,但它不起作用:void SwizzleClassMethod(Class c, SEL orig, SEL new) { Method origMethod = class_getClassMetho...

25得票1回答
iPhone设备上的方法交换

我尝试了JRSwizzle和MethodSwizzle,模拟器上编译正常,但在设备上编译时会抛出一堆错误(3.x) 有人在iPhone上成功使用方法交换吗?有什么技巧吗? TIA

25得票2回答
App Store - Method Swizzling 的合法性

有关方法替换在App Store上是否合法的最新信息是什么? 我能找到的唯一数据点是一段时间以前Three20框架的调整,其始于以下通知: 您的应用程序xxx目前已发布到App Store,正在使用method_exchangeImplementations来交换Apple提供的AP...

20得票8回答
Swift函数混淆/运行时

在Swift之前,我会使用<objc/runtime.h>在Objective-C类中进行拦截或挂钩方法。 如果有人对修改Swift运行时和挂接函数的主题拥有像CydiaSubstrate和其他帮助过这个领域的库方面的信息,请告诉我。

19得票3回答
对单个实例进行Swizzling,而不是对整个类进行。

我在NSObject上有一个类别,它应该做一些事情。 当我在对象上调用它时,我想重写其dealloc方法以进行一些清理。 我想使用方法交换来实现它,但是我无法弄清楚如何做到这一点。 我发现的唯一示例是如何替换整个类的方法实现(在我的情况下,它将覆盖所有NSObjects的dealloc - ...

18得票3回答
现在Swift已经弃用了initialize(),在macOS中有替代方法吗?

Objective-C声明了一个类函数initialize(),它在每个类被使用之前运行一次。它经常被用作交换方法实现(方法混淆)等操作的入口点。它在Swift 3.1中已被弃用。 这是我以前做的事情: extension NSView { public override clas...

15得票1回答
iOS - Firebase Cloud Messaging的方法交换技术

我正在使用 Firebase Cloud Messaging 进行推送通知的应用程序开发。在阅读其文档后,我对“禁用 swizzling”有点困惑。我尝试寻找一些教程来讲解它,但不幸的是没有任何教程。您能否帮我描述一下什么是“swizzling”,以及我们需要在哪些情况下使用它? 非常感谢。...

11得票2回答
从交换方法中调用原始函数

我正在尝试使用方法交换技术(method swizzling),并希望在执行method_exchangeImplementations后调用原始函数。我已经为此设置了两个项目。 第一个项目是应用程序的主要项目,包括应用所有逻辑。请注意,在视图加载时调用了originalMethodName...

11得票1回答
方法混淆和isa混淆是相同的吗?

方法交换和isa交换是一回事吗?如果不是,那么isa交换是什么?