首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏thinkphp+vue

    Method-Swizzling 方法交换

    method-swizzling 是什么? method-swizzling的含义是方法交换,其主要作用是在运行时将一个方法的实现替换成另一个方法的实现,这就是我们常说的iOS黑魔法, 在OC中就是利用method-swizzling实现AOP, aIMP 指向 bIMP,但是bIMP不一定指向aIMP method_exchangeImplementations:交换两个方法的实现,即 aIMP -> bIMP, bIMP -> aIMP 坑点1:method-swizzling - 类方法 类方法和实例方法的method-swizzling的原理是类似的,唯一的区别是类方法存在元类中,所以可以做如下操作 LGStudent中只有类方法sayHello的声明,没有实现 @interface 的应用 method-swizzling最常用的应用是防止数组、字典等越界崩溃 在iOS中NSNumber、NSArray、NSDictionary等这些类都是类簇,一个NSArray的实现可能由多个类组成

    87340编辑于 2022-03-08
  • 来自专栏HelloCode开发者学习平台

    所谓有经验的iOS开发,这些你扎心了吗?

    所以这个时候 AOP 就可以完美的解决这个问题,对于 OC 来说,我们可以直接 Method-Swizzling 来 Hook 当前的 viewWillAppear 和 viewWillDisappear 但是这种简单的 Method-Swizzling 其实存在一定的安全隐患。 Aspects 是一个使用简单的 AOP 库,适用于 iOS 和 OS X。

    38720编辑于 2023-03-23
  • 来自专栏iOS开发

    iOS开发之 Method Swizzling 深入浅出

    www.tingyun.com/ 国内听云 http://www.oneapm.com/ 国内OneAPM http://apm.netease.com/ 国内网易 国外资料 http://nshipster.com/method-swizzling abhimuralidharan/method-swizzling-in-ios-swift-1f38edaf984f https://darkdust.net/writings/objective-c/method-swizzling iossolves.blogspot.com/2017/11/swift-4-method-swizzling-part-22.html https://sexyswift.wordpress.com/tag/method-swizzling

    2.7K70发布于 2018-04-24
  • 来自专栏HelloCode开发者学习平台

    蚂蚁金服面试题笔试部分,答案如下

    利用runtime , method-swizzling 黑魔法,交换方法,通过改变我们原始的方法的IMP的指向.指向我们要处理正确逻辑的函数实现.这样的方式,还可以用作来页面统计,接口记录,方法记录!

    70110编辑于 2023-03-23
  • 来自专栏Helloted

    APP生成与运行(二)

    感兴趣的同学可以看看我之前这篇文章:《Swift进阶之内存模型和方法调度》 Initializers 通常,我们会在+load方法中进行method-swizzling,这也是Nshipster推荐的方式 不少同学喜欢用method-swizzling来实现AOP去做日志统计等内容,强烈建议改为在initialize进行初始化。

    1.8K10编辑于 2022-06-07
  • 来自专栏iOS开发日记

    给我十个可爱的订阅的粉丝带来的一篇iOS面经。。。。

    三、Runtime 可以说是中级以及以上工程师的必备技术要求,面试官往往会考察大家对对象、类对象、原类对象的理解、消息传递机制、消息转发流程、Method-Swizzling、ISA-swizzling

    1.4K130发布于 2018-05-05
  • 来自专栏iOS面试

    再谈 iOS App Crash 防护

    objc_getClass("NSTaggedPointerString") superclass] before iOS8:NSObject after iOS8:NSString 以上这些实现的调整,造成的影响均是 method-swizzling 排查搜索之后,发现这可能是在 ARC 环境下,苹果对 dealloc 方法的特殊处理导致的,在 method-swizzling 后,原 dealloc 的 selector 实际上已经变成了转发后的

    2.6K40发布于 2020-06-10
  • 来自专栏Helloted

    OC对象模型

    KVO运用了一个isa-swizzling的机制,runtime还有一个method-swizzling的机制,称为’黑魔法’。

    93220编辑于 2022-06-06
  • 来自专栏网罗开发

    iOS 无侵入埋点组件总结

    3.2 技术原理 3.2.1 Method-Swizzling OC 中的方法调用其实是向一个对象发送消息 ,利用 OC 的动态性可以实现方法的交换。

    4.5K31发布于 2021-08-13
  • 来自专栏iOS技术杂谈

    iOS网络——AFNetworking AFURLSessionManager源码解析

    接下来的源码中有一部分关于method-swizzling的技术,这一部分由于篇幅问题不打算展开讲解,_AFURLSessionTaskSwizzling类存在的目的就是为了交换NSURLSessionTask 的resume和suspend方法的实现,因为iOS7和iOS8中NSURLSessionTask的父类不同,需要做一些处理,关于method-swizzling技术有兴趣的读者可以阅读iOS runtime

    4.8K70发布于 2018-04-10
  • 来自专栏云原生布道专栏

    【IOS开发高级系列】Objective-c Runtime专题总结

    MethodSwizzling http://southpeak.github.io/blog/2014/11/06/objective-c-runtime-yun-xing-shi-zhi-si-:method-swizzling

    80030编辑于 2023-10-16
  • 来自专栏戴铭的博客

    Objc Runtime 总结

    stackoverflow.com/questions/5371601/how-do-i-implement-method-swizzling Method Swizzling http://nshipster.com/method-swizzling

    1.1K20发布于 2020-06-16
领券