Runtime 实现hook方法

@interface TestObject : NSObject

- (void)testMethod:(NSString *)text;

@end


@implementation TestObject

- (void)testMethod:(NSString *)text {

NSLog(@"testMethod : %@", text);

}

@end

// runtime

IMP function = imp_implementationWithBlock(^(id self, NSString *text) {

NSLog(@"callback block : %@", text);

});

const char *types = sel_getName(@selector(testMethod:));

class_replaceMethod([TestObject class], @selector(testMethod:), function, types);

TestObject *object = [[TestObject alloc] init];

[object testMethod:@"lxz"];

callback block : lxz

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。