美文网首页
OC中使用类别Extension调用私有方法

OC中使用类别Extension调用私有方法

作者: 木小土 | 来源:发表于2017-07-27 13:59 被阅读70次

    前言

    项目中使用CocoaPod引入一个第三方库,使用过程中发现需要调用第三方库中的一个私有方法。

    可选的方案有两个:

    1. 使用runtime hook第三方库的方法
    2. 在使用类中使用类别暴露第三方库的方法

    但考虑到后续第三方库有可能会更新的问题,为了降低维护成本,最终选择了方案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];
    }
    

    相关文章

      网友评论

          本文标题:OC中使用类别Extension调用私有方法

          本文链接:https://www.haomeiwen.com/subject/ntyzkxtx.html