如何弱一个类从一个静态库导入另一个库(Objective-C)

 鹰击长空1943 发布于 2023-01-30 09:13

我有一个静态库,我们称之为libSuperCool.a.在其中我希望使用Millennial Media的SDK,libMMSDK.a.现在出于个人原因,我希望我的库不要吸收任何SDK的代码,我希望任何使用libSuperCool的应用程序都可以使用或不使用libMMSDK.a链接进行编译; 因此,libSuperCool不会链接到libMMSDK.

默认情况下,libSuperCool内部对libMMSDK的任何引用都很强,要求链接libMMSDK,否则无法成功链接可执行文件.例如,我的一个源文件创建了类型的变量MMRequest *.

nm -m libSuperCool.a |grep MMReq
    (undefined) external _OBJC_CLASS_$_MMRequest

我在网上找到了一篇非常有趣的帖子,解释了如何将一个ObjC类引用转换为一个弱引用:通过asm(".weak_reference _OBJC_CLASS_$_MMRequest");在.m文件中使用,这样的引用会变弱.

nm -m libSuperCool.a |grep MMReq
    (undefined) weak external _OBJC_CLASS_$_MMRequest

但是在这之后,我尝试构建一个链接libSuperCool的简单应用程序.我仍然在_OBJC_CLASS _ $ _ MMRequest上得到未定义的符号错误.

是否需要在链接时解析符号,如果是,为什么?我可以很容易地将我的变量声明为id并得到我的最终结果,毕竟这是Objective-C.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有