必威体育Betway必威体育官网
当前位置:首页 > IT技术

能够hook住dealloc方法吗?

时间:2019-06-22 00:41:04来源:IT技术作者:seo实验室小编阅读:66次「手机版」
 

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被替换了");
}

个人博客

相关阅读

STL:: allocator之deallocate & destory的区别与联系

c++中的allocator是标准库中的一个类,负责内存分配管理。下面是《STL源码剖析》中一个简单allocator实现的部分源代码:deallocate: t

iOS 什么时候调用dealloc

- (void)dealloc; 什么时候回调用dealloc?1、这个类被release的时候会被调用;2、这个对象的retain count为0的时候会被调用;或者说

分享到:

栏目导航

推荐阅读

热门阅读