小编典典

Swift功能混乱/运行时

swift

在Swift之前,在Objective-C中,我会使用混淆或钩住类中的方法<objc/runtime.h>

如果有人对修改Swift的运行时以及挂钩功能(如CydiaSubstrate)和其他在此方面提供帮助的库有任何信息,请通知我。


阅读 281

收藏
2020-07-07

共1个答案

小编典典

我已经在Swift中成功使用方法。本示例说明如何在NSDictionary上挂钩描述方法

我的实现:

extension NSDictionary {
     func myDescription() -> String!{
        println("Description hooked")
        return "Hooooked " + myDescription();
    }
}

混乱的代码:

func swizzleEmAll() {
        var dict:NSDictionary = ["SuperSecret": kSecValueRef]
        var method: Method = class_getInstanceMethod(object_getClass(dict), Selector.convertFromStringLiteral("description"))

        println(dict.description) // Check original description

        var swizzledMethod: Method = class_getInstanceMethod(object_getClass(dict), Selector.convertFromStringLiteral("myDescription"))
        method_exchangeImplementations(method, swizzledMethod)

        println(dict.description) //Check that swizzling works
    }

编辑: 此代码适用于从 NSObject 继承的任何自定义Swift类(但不适用于非自定义的Swift类。)更多示例-https:
//github.com/mbazaliy/MBSwizzler

2020-07-07