编译参数-ObjC的说明

一些第三方库里对系统库的类加了 categoryspa

这时,就须要使用编译参数: -ObjC ,这样第三方库中对系统类做的扩展方法才能在工程中使用。 it

可是使用 -Objc 后,会产生两个问题: 编译

1 undefined symbols  class

2 duplicate symbol 扩展

undefined symbols 说明工程中没有引入第三方库引用的库。 引用

若是不加 -ObjC 参数,则在编译时不会出错,但运行时用到了没引用库的方法,则系统会崩溃。 方法

这个问题好解决。只要找到缺的库,引入工程就能够了。命名

duplicate symbol 的问题就很差解决了,说明第三方库中的类名和工程中的类名,或其它第三方库中的类名重名了。 di

最多见的好比 Reachability 这个类,若是第三方库中引用了,本身的工程中也引用了,就会报 duplicate symbol源代码

若是引用的第三方库没有源代码,就只能将本身工程中的重名类重命名了。

应对上面的问题,若是本身要制做一个库的话,要注意两点:

1 、避免对系统类加 category, 这样,别人用你的库时,不加 ObjC 参数也能够用你的库。

2 、若是库中用到了其它的第三方的源代码,尤为是用的比较广泛的,如 Reachability, 必定必定要对

这些类重命名,最多见的做法就是给类名加个前缀。以免别人用你的库时,产生 duplicate symbol 的问题。

相关文章
相关标签/搜索