能够hook住dealloc方法吗?

一个朋友群里讨论能够hook住dealloc方法吗?然后当时我就想为什么hook不住吗?所以我就在群里问为什么呢?奈何他也不知道。所以剩下的只能是我自己去尝试一下了。

大家hook方法的时候第一步肯定是首先获取到方法的实现。用到如下代码:

Method repMethod = class_getInstanceMethod([self class], @selector(replaceDelloc));

奈何我用上述方法写的时候Xcode编译器会报编译错误

ARC forbids use of 'dealloc' in a @selector

哦!作者终于明白朋友口中的hook不住,其实就是因为写法的问题,Xcode不让我们这么写,所以谈何去hook呢?既然不能这么写那我们换种写法不就行了吗?是的。哈哈

Method oriMethod = class_getInstanceMethod([self class], NSSelectorFromString(@"dealloc"));

我们通过字符串获取到方法就可以了,这样Xcode在编译的时候检查不到啦。

+(void)load{
//    Method oriMethod = class_getInstanceMethod([self class], @selector(dealloc));

    Method oriMethod = class_getInstanceMethod([self class], NSSelectorFromString(@"dealloc"));
    Method repMethod = class_getInstanceMethod([self class], @selector(replaceDelloc));
    method_exchangeImplementations(oriMethod, repMethod);
}
- (void)replaceDelloc{
    NSLog(@"delloc被替换了");
}

个人博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,321评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,838评论 4 61
  • 今天的任务是分享一个从精神上指引我想要变得更美好的“神器”,一个人、一本书或是其他…… 说到督促自己不断有从外表上...
    starry666阅读 1,688评论 0 0
  • 相信大家在做PPT时会经常遇到一个问题:PPT文件太大。而PPT文件过大,往往是由于图片或者视频等多媒体内容过大导...
    许仔阅读 3,813评论 0 0
  • 1在General中->Identity->Bundle Identifier 中输入要出版本的app账号id 2...
    乡村小子阅读 2,880评论 0 0

友情链接更多精彩内容