Method m1 = class_getInstanceMethod([Nsstringclass],@selector(lowercaseString));Method m2 = class_getInstanceMethod([Nsstringclass],@selector(uppercaseString));method_exchangeImplementations(m1,m2);log List: (lldb)po [@"assAAAAss" lowercaseString]ASSAAAASS(lldb) po [@"sssKAAAss" uppercaseString]ssskaaass自定义类的方法实现部分替换
在这里要说到一个黑马的典型死循环(人称自己++自己)
(voID)vIEwDIDLoad {[selfmethodSetImplementation];[self test];} -(voID)test{ [self test];}
如何在不改变源码的基础上干掉死循环
- (voID) methodSetImplementation { Method method = class_getInstanceMethod([VIEwController class],@selector(justLog1)); IMP originalimp = method_getImplementation(method); Method m1 = class_getInstanceMethod([VIEwController class],@selector(test)); method_setImplementation(m1,originalImp); } - (voID) justLog1 { NSLog(@"justLog1");//完美实现实例方法替换 }
总结 以上是内存溢出为你收集整理的cocoa之高级开发RunTime高级API全部内容,希望文章能够帮你解决cocoa之高级开发RunTime高级API所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)