【问题标题】:iPhone - How to modify a static library (.a file)iPhone - 如何修改静态库(.a 文件)
【发布时间】:2012-03-20 14:04:04
【问题描述】:

我获得了一个必须在项目中使用的静态库(.a 扩展文件),但是我需要修改一些源代码才能对我有用。实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: iphone static-libraries


    【解决方案1】:

    简单但最不适用的解决方案是子类化或扩展。

    如果许可证授权,您也可以尝试反编译 .a 文件:cf。 Decompiling Objective-C libraries,但它可能很棘手和/或非法。

    【讨论】:

      【解决方案2】:

      您不能修改静态库,最好的办法是尝试访问源代码或请作者为您修改。

      【讨论】:

        【解决方案3】:

        您可以使用 Objective C 扩展。

        例如,.a 库中有一个[MyClass myMethod],您想更改它,可以使用以下代码:

        #import "MyClass.h"
        @interface MyClass( CategoryName )
        -(void)myMethod;
        @end
        
        @implementation MyClass( CategoryName )
        -(void)myMethod
        {
            //new implementation goes here
        }
        @end
        

        【讨论】:

        • 什么是 CategoryName ?
        • 这个答案是完全错误的。 Swizzling 使用类别具有未定义的行为。
        【解决方案4】:

        您不能修改库,只能扩展。这就是重点——在人们无法阅读的情况下分发代码背后的功能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-29
          • 1970-01-01
          • 2011-09-14
          • 1970-01-01
          • 1970-01-01
          • 2011-04-29
          • 2015-12-03
          • 2012-03-01
          相关资源
          最近更新 更多