Iphone objective-c静态库类类别,重写方法不起作用
我在iphone上使用Three20,我试图通过使用一个类来改变其中的一个方法。它编译得很好,但我从未达到它的断点 我假设一个类类别会影响该类的所有实例,所以我不必重新编译静态库就可以让它工作 我还知道,我用于该类别的类正在被看到,因为如果我在接口和实现该类别时在类名的末尾添加“x”,编译器将失败Iphone objective-c静态库类类别,重写方法不起作用,iphone,objective-c,categories,Iphone,Objective C,Categories,我在iphone上使用Three20,我试图通过使用一个类来改变其中的一个方法。它编译得很好,但我从未达到它的断点 我假设一个类类别会影响该类的所有实例,所以我不必重新编译静态库就可以让它工作 我还知道,我用于该类别的类正在被看到,因为如果我在接口和实现该类别时在类名的末尾添加“x”,编译器将失败 非常感谢这里的任何指导。当两个类别在同一个二进制文件中重写同一类上的同一方法时,不会定义哪个重写优先。为了获得最佳结果,请创建一个子类,然后重写该子类上的方法。或者,因为Three20是Apache许
非常感谢这里的任何指导。当两个类别在同一个二进制文件中重写同一类上的同一方法时,不会定义哪个重写优先。为了获得最佳结果,请创建一个子类,然后重写该子类上的方法。或者,因为Three20是Apache许可的,所以您可以在库本身进行更改。正如前面所指出的,您需要在应用程序的其他链接器标志中设置-all_load选项,以便在iPhone OS 3.0中将类别链接到静态库-ObjC也应该做到这一点,但它在当前的SDK上不起作用。在Xcode 4.2中的LLVM编译器中,他们修复了导致-ObjC的另一个链接器标志无法正常工作的链接器错误,因此您不再需要使用-all_load(这有一些令人讨厌的副作用)-ObjC应该是从静态库中获取类别所需的全部
这可能会导致您的问题,尽管我认为Three20首先需要设置这些链接器标志,以便它与您的应用程序正确链接,因此,您可能已经准备好了这些标志。我有一个链接到静态库的项目,是的,在使用3.0 sdk的设备上安装时需要-all_load标志-ObjC是模拟器所需的全部功能。我知道我可以更改库,但我希望得到一个快速修复,我不想研究如何重新编译静态库,但我可能不得不这样做。谢谢。一个真正快速的解决方法是在运行时使用method|(get | set)实现替换该方法。+1-all_load标志帮助我解决了一个类似(但不是完全相同)的问题,尽管我已经设置了-ObjC。