runtime
object-c 的runtime原理
刘小哈哈哈
这个作者很懒,什么都没留下…
展开
-
iOS使用 class_addMethod hook 类的方法
oc runtime 实现交换方法方案二class_addMethodclass_replaceMethod# 方案一直接使用method_exchangeImplementations 交换两个方法的实现该方案可以实现方法的替换,但是有风险,就是如果是在子类实现了交换方法,但是交换的是一个父类实现了子类没有实现的方法,就会将父类方法的替换成子类的实现,如果父类的实例对象调用父类的方法的时候,由于已经替换成子类实现的方法,就会因为父类没有实现该方法导致崩溃如;@interface Father原创 2021-10-15 00:31:26 · 686 阅读 · 0 评论 -
iOS设置代理,不同的代理方法是可以分别由父类或者子类实现的, 同一个代理协议的不同方法也是可以分别在子类或者父类中实现的
TPAskanswerSinglePageView 是LBVerticalPageViewCell的子类@interface TPAskanswerSinglePageView : LBVerticalPageViewCell@end父类中创建了tableView 并设置了代理- (UITableView *)tableView{ if (!_tableView) { _tableView = [[UITableView alloc] initWithFrame:原创 2021-08-29 11:23:49 · 698 阅读 · 0 评论 -
iOS两种方案修改某个类的方法实现
我这里需呀修改某个类的scrollViewDidScroll 代理方法的实现用两种方案进行实现一 继承 于该视图 改方案要确保父类 该方法对外暴漏实现父类的方法,并调用[super scrollViewDidScroll]然后添加自定义的操作二 使用分类替换方法实现+ (void)load{ Method originMethod =class_getInstanceMethod([GKPageScrollView class], @selector(scrollView原创 2021-06-22 10:20:43 · 377 阅读 · 0 评论 -
OC 获取某个类实例变量的类型
如图,获取到的实例ba原创 2021-06-21 11:16:33 · 360 阅读 · 0 评论 -
iOS 通过协议将一个对象的属性赋给另一个对象实例和将一个实例的属性赋给另一个实例
直接上代码- (BOOL)copyValueToInstance:(nonnull __kindof NSObject *)obj bySingleProtocol:(nonnull Protocol *)protocol whiteList:(nullable NSArray<NSString *> *)whiteList blackList:(nullable NSArray<NSStr原创 2021-03-08 15:05:10 · 344 阅读 · 0 评论 -
iOS 方法编码
, @selector(tableView:willDisplayCell:forRowAtIndexPath:),tmpImp, [@"v@:@@@" UTF8String]'v'代表返回值void, 第一个‘@’ 代表self, ’:' 代表selector 方法, 第二个 ‘@ ’代表第一个参数, 第三个‘@ ’代表第二个参数 第四个‘@ '代表第三个参数...原创 2021-01-20 16:38:43 · 123 阅读 · 0 评论