`

ios类别编译成框架或静态库后无法使用起方法

    博客分类:
  • ios
 
阅读更多

加-ObjC和-all_load

 

http://developer.apple.com/library/mac/#qa/qa1490/_index.html

Objective-C does not define linker symbols for each function (or method, in Objective-C) - instead, linker symbols are only generated for each class. If you extend a pre-existing class with categories, the linker does not know to associate the object code of the core class implementation and the category implementation. This prevents objects created in the resulting application from responding to a selector that is defined in the category.

To resolve this issue, the target linking against the static library must pass the -ObjC option to the linker. This flag causes the linker to load every object file in the library that defines an Objective-C class or category. While this option will typically result in a larger executable (due to additional object code loaded into the application), it will allow the successful creation of effective Objective-C static libraries that contain categories on existing classes.

Important: For 64-bit and iPhone OS applications, there is a linker bug that prevents -ObjC from loading objects files from static libraries that contain only categories and no classes. The workaround is to use the -all_load or -force_load flags.

分享到:
评论

相关推荐

    iOS版编译完成的OpenSSL库

    静态库文件则包含预编译的二进制代码,这些代码在应用链接时会被合并到最终的可执行文件中。 针对iPhone 15.5.sdk版本编译的OpenSSL库意味着该库已经过优化,适应了这个特定iOS版本的架构和API。iOS SDK是苹果为...

    webrtc静态库(iOS)

    标题中的“webrtc静态库(iOS)”指的是专为iOS平台编译的WebRTC静态链接库。使用静态库的好处在于可以将所有依赖的库和代码打包到一个单独的文件中,这样在编译应用时,库的所有功能都会被直接包含进可执行文件,减少...

    iOS端libcurl静态库

    本压缩包提供的libcurl静态库已针对iOS平台进行了编译,包含了对不同架构的支持,如armv7、armv7s、x86_64和arm64,覆盖了从老款iPhone到最新设备的兼容性。 集成libcurl到iOS项目中,通常需要以下步骤: 1. **...

    ios平台使用cmake交叉编译的工具链

    在iOS开发中,有时我们需要为不同的架构或平台创建软件库,比如静态库(.a)和动态库(.dylib)。为了实现这一目标,开发者经常利用交叉编译技术,这是一种可以在一个系统上构建针对另一个系统(在这种情况下是iOS)的...

    编译好的ffmpeg静态库for iOS

    总的来说,这个压缩包提供了一个方便的起点,让iOS开发者可以直接使用预编译的FFmpeg静态库,而不必经历编译源代码的复杂过程。这极大地简化了集成步骤,使开发者能够更快地将FFmpeg的强大功能应用于他们的iOS应用中...

    MUPDF iOS真机静态库文件

    为了在iOS平台上使用,这个库通常会被编译成适用于不同架构的静态库,例如`armv7`和`arm64`,这两种架构分别对应于iOS设备上的32位和64位处理器。这些静态库文件是应用在运行时加载和链接的,不需要运行时动态加载,...

    IOS添加只有.h的静态库

    在iOS应用开发中,静态库是预编译好的二进制代码文件,可以直接被链接到应用程序中。当开发者只拥有静态库的头文件(.h)时,实现库的添加会遇到一定的挑战。为了解决这个问题,接下来我们将详细探讨如何将仅包含...

    qt5.15.9-static 静态编译库,已经编译完毕,直接安装即可

    在这个静态编译库版本中,所有必要的依赖项都已包含在内,这意味着使用这个库编译的应用程序将不需在目标系统上安装额外的库或依赖,可以直接运行。 首先,我们要理解“静态编译库”的概念。静态库是指在编译应用...

    ios创建framework静态库demo

    6. **使用静态库**:将生成的.a文件和对应的头文件(.h)放入另一个项目中,添加到项目中,然后在需要使用的地方导入头文件,就可以调用库中的方法了。 **注意事项:** 1. 静态库会增大应用程序的体积,因为库中的...

    银联支付64位静态库, iOS android,

    银联支付64位静态库是为iOS和Android平台提供的一种支付解决方案,它允许开发者将银联支付功能集成到自己的应用程序中。这个静态库,libUPPayPlugin.a,是银联专门为64位架构设计的,确保在最新的移动设备上能够高效...

    ffmpeg2.6 在ios下的静态库i386 x86_64 armv7 armv7s arm64架构

    在构建过程中,你需要执行多目标编译,分别针对每个架构生成对应的静态库,然后通过Lipo工具将它们合并成一个统一的 fat library。 以下是一般的步骤: 1. **配置环境**:安装Xcode,设置好iOS开发环境,确保CMake...

    lame静态库(IOS)

    5. **编译静态库**:执行编译命令,生成适用于iOS的静态库文件(.a文件)。 6. **集成到你的项目**:将生成的.la文件添加到你的iOS项目中,同时需要链接所需的系统库,如AudioToolbox和AVFoundation等。 7. **调用...

    FFmpeg 2.5.3 编译的静态库(arm64 armv7s armv7 x86_64 i386)。

    3. **Xcode6 和 iOS8**:FFmpeg 2.5.3 静态库是为使用Xcode 6开发的iOS 8应用准备的。Xcode 6是苹果在2014年推出的一个版本,支持iOS 8的开发,而iOS 8引入了多项新功能和API更新。 4. **整合多架构**:这些静态库...

    IOS应用源码Demo-超详细图文介绍如何制作,编译,使用静态编译库-毕设学习.zip

    本压缩包提供了一份详细的iOS应用源码Demo,旨在帮助学生掌握如何制作、编译以及使用静态编译库。以下是这个压缩包中涉及的关键知识点: 1. **iOS应用开发基础**:iOS应用开发主要使用Swift或Objective-C语言,基于...

    IOS应用源码之【应用】iOS framework 制作教程【非静态包】.rar

    iOS Framework主要有两种类型:静态库(Static Library)和动态库(Dynamic Library)。静态库在编译时会合并到目标应用中,而动态库则在运行时由系统加载。本教程关注的是动态库,也称为动态框架(Dynamic ...

    开始在iOS上使用XMPPFramework框架.docx

    添加Vendor/libidn的相关文件,包括libidn.a静态库,虽然文件较大,但编译时只会提取所需的架构部分,不会显著增加应用的大小。 除了上述依赖,还需要将以下文件夹和库添加到Xcode项目: - ...

    傻瓜都会编译的ios_mp4v2

    【描述】"mp4v2的ios编译,附带傻瓜式讲解" 提示我们这个项目不仅包含了源代码,还有一份详尽的编译教程,旨在帮助那些对iOS开发或编译过程不熟悉的人。这意味着,即使是没有深厚编程背景的开发者,也能按照指导逐步...

    iOS的framework动态库

    动态库与静态库的区别在于,静态库在编译时会被合并到可执行文件中,而动态库则在运行时被加载。动态库的优势在于减少了应用程序的大小,因为多个应用可以共享同一份库的内存副本,降低了资源消耗。 iOS支持两种...

    mac上编译FFmpeg跑ios

    完成编译后,你会得到一组适用于 iOS 的静态库或动态库文件,这些库文件可以被集成到你的 iOS 项目中。在 Xcode 项目中,将这些库添加到 "Link Binary With Libraries" 部分,并确保 Header Search Paths 和 Other ...

    x264-iOS编译后文件

    x264-iOS编译后文件是一组专为iOS平台优化的编译结果,包含头文件和静态库(.a文件)。x264是一个开源的H.264视频编码器,广泛应用于视频处理、流媒体服务以及移动设备上的视频编码和解码。在iOS开发中,x264库可以...

Global site tag (gtag.js) - Google Analytics