前言
项目中使用CocoaPod引入一个第三方库,使用过程中发现需要调用第三方库中的一个私有方法。
可选的方案有两个:
- 使用runtime hook第三方库的方法
- 在使用类中使用类别暴露第三方库的方法
但考虑到后续第三方库有可能会更新的问题,为了降低维护成本,最终选择了方案2。
代码类似于:
//
// Person.h
// TestDemo
//
// Created by Ella on 2017/7/27.
// Copyright © 2017年 Ella. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Person : NSObject
- (void)getMyName;
@end
//
// Person.m
// TestDemo
//
// Created by Ella on 2017/7/27.
// Copyright © 2017年 Ella. All rights reserved.
//
#import "Person.h"
@implementation Person
- (void)__init {
NSLog(@"__init function");
}
- (void)getMyName {
NSLog(@"I'm a humanbeing and my name is Johny");
}
@end
在调用的类中定义类别:
//
// ViewController.m
// TestDemo
//
// Created by Ella on 2017/7/27.
// Copyright © 2017年 Ella. All rights reserved.
//
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
@end
@interface Person()
- (void)__init;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
Person *person = [[Person alloc] init];
[person getMyName];
[person __init];
}