【问题标题】:Call non-exported method from static library从静态库调用非导出方法
【发布时间】:2015-04-29 07:58:03
【问题描述】:

我在我的 Objective-C 项目中使用由其他人构建的静态库。库中有一个我想调用的 C 方法,但它没有被导出。如何在 Objective-C 代码中调用这个方法?

【问题讨论】:

    标签: objective-c c static-libraries reverse-engineering


    【解决方案1】:

    首先:你为什么需要它?显然,该框架的作者没有看到任何需要这样做,如果直接执行一个方法,事情可能会中断。

    但是:使用该方法在接收器上编写一个类别,然后执行此操作。 Objective-C 是动态绑定的,所以这是可行的。

    @interface FrameworkClass(InternalMethodAddition)
    - (void)internalMethod;
    @end
    // Do not implement this category.
    …
    FrameworkClass *object = …
    [object internalMethod];
    

    【讨论】:

    • 谢谢阿明。您将如何为静态全局方法执行此操作?该方法通常会像这样被调用:foo().
    • 这不是方法,而是函数。它不适用于函数,因为标识符在运行时不可用,并且函数调用是静态绑定的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多