`
咖啡动力
  • 浏览: 442022 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

objective-c调用静态库

阅读更多
一.基本知识

在实际的编程过程中,通常会把一些公用函数制成函数库,供其它程序使用,一则提搞了代码的复用;二则提搞了核心技术的保密程度。所以在实际的项目开发中,经常会使用到函数库,函数库分为静态库和动态库两种。和多数人所熟悉的动态语言和静态语言一样,这里的所谓静态和动态是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库;而动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间还需要动态库的存在。

对iPhone平台来说,iPhone官方只支持静态库联编,因此下面就介绍下iPhone中静态库的用法。

二.iPhone静态库使用

1.创建静态库

打开XCode新建一个项目,选择Library下的“Cocoa Touch Static Library”,在Classes文件夹上点右键选择“New File…”,然后在“Cocoa Touch Class”下选择“Objective-C class”,这样就可以创建Objective-C风格的源文件和头文件。

同样,也可以创建C或者C++风格的代码,在Classes文件夹上点右键,选择“New File…”,这次选择Mac OS X下的“C and C++”,就行。

然后在文件里编写具体的调用代码。

最后进行编译,就会产生一个以.a为结尾的文件,就是我们需要的静态库。同时我们也需要生成的.h头文件。

2.使用静态库

在需要调用静态库的工程的目录下通过右键点Frameworks->Add->Existing Files..添加之前创建的.a静态库文件,然后在需要调用静态库的函数的.h文件里,import进来和静态库中.m对应的.h头文件,并且声明静态库里的类:@class 类名,这样就可以使用静态库里的函数了。

3.联调静态库

如果单单以copy的方式包含进.a静态库,这样只能使用静态库,如果需要修改静态库里的函数,则需重新生成静态库,并将其重新包含进来,在开发阶段会显得比较麻烦。可以采用Xcode的Cross-Project Reference(跨项目参考)的方式解决。

首先把静态库的XCode项目整个包含进我们的当前项目(注意:不要选择Copy items to destination group's folder选项)。

接着和第二步一样也是包含进.a静态库(也要注意:不要选择Copy items to destination group's folder选项)。

这样就可以从我们当前的项目里直接打开静态库的项目,直接修改(注意:修改后编译前必须选择clean,清除原有的静态库,重新生成)。


现在发现一个简单的调用静态库的方法

framework右键点击add-->ExistingFramework-->add other  浏览静态库(.a)文件添加进来,就可以用。


参考网址:http://www.cocoachina.com/iphonedev/sdk/2010/0331/887.html
分享到:
评论

相关推荐

    PP软件授权平台 终端授权库IOS Objective-C调用示例代码 2019.03.13

    开发者需要了解如何在Xcode项目中导入静态库,静态库是一种预编译的代码库,可以被多个应用程序共享,减少了代码重复编写。Xcode 8是苹果提供的IDE,用于开发iOS和macOS应用,这个示例代码兼容的是64位架构的设备,...

    在Objective-C中使用C++

    Objective-C是C语言的超集,这意味着任何有效的C代码都可以在Objective-C中使用。由于C++也是C的超集,因此Objective-C也能够直接支持C++代码。开发者可以在Objective-C类中嵌入C++代码,反之亦然。 2. **命名空间...

    这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语法。.zip

    10. **Foundation框架**:Objective-C的基础库,包含了大量用于日常编程的基本数据结构和系统服务。 11. **UIKit框架**:对于iOS开发,UIKit提供了用于构建用户界面的类和接口。 这个基础案例集可能包含了许多这些...

    The Objective-C Programming Language

    Objective-C的设计目的是赋予C语言完整的面向对象编程能力,并且尽可能保持简洁易懂。 #### 面向对象开发环境组成部分 一个完整的面向对象开发环境通常包括以下几部分: 1. **面向对象编程语言**:这是实现面向...

    From C++ to Objective-C

    **Objective-C** 是一种面向对象的编程语言,它在C语言的基础上增加了面向对象的功能,是开发macOS和iOS应用的主要语言之一。Objective-C的设计哲学强调了消息传递的概念,并且在语法上兼容C语言。 ##### 1.1 ...

    从C++到 Objective-c

    Objective-C的独特之处在于它是C语言的一种超集,这意味着任何有效的C代码都可以被视为有效的Objective-C代码。 Objective-C的设计灵感主要来源于Smalltalk——这是一种高度动态的面向对象语言,拥有强大的类系统。...

    From C++ to Objective-C version 1.9

    Objective-C强调消息传递和动态类型,这与C++中的静态类型和函数调用有所不同。通过本篇概览,我们对Objective-C的基本概念有了初步的认识,包括其历史背景、语法特点、类与对象的概念、继承机制以及协议和类别的...

    The Objective-C 2.0 Programming Language

    Objective-C也可以与C++语言混合使用,这在处理遗留的C++代码或需要C++库时非常有帮助。通过适当的桥接技术,可以在这两种语言之间进行无缝的协作。 运行时系统(The Runtime System)是Objective-C强大动态特性的...

    基于Objective-C开发的新闻客户端App.zip

    Objective-C是苹果公司为iOS和Mac OS X操作系统开发的主要编程语言,它扩展了C语言,引入了面向对象的概念。这个新闻客户端App可能是为了提供用户最新的新闻资讯、文章阅读以及个性化定制功能。 【描述】: 描述中的...

    libobjc2:旨在与Clang一起使用的Objective-C运行时库

    Objective-C是一种基于C语言的面向对象编程语言,其运行时库是实现语言特性的关键组件。本文将深入探讨libobjc2的设计理念、主要功能以及与Clang的协同工作方式。 1. **Objective-C运行时的重要性** Objective-C的...

    swift-一个用Swift编写的Objective-C模拟器

    Objective-C是苹果早期的主要开发语言,它基于C语言并添加了面向对象的特性,其运行时系统是其核心组成部分。 Objective-C的运行时系统是动态的,允许在程序运行时进行方法调用、类的加载和修改。这个系统包括了类...

    Objective C 第六版

    对于那些已经积累了大量 Objective-C 代码库的项目来说,Objective-C 仍然是一种不可替代的语言。此外,学习 Objective-C 也有助于更好地理解 iOS 和 macOS 应用的底层机制,为开发者提供更广阔的视角。 总之,...

    The Objective-C Programming Language (Apple Developer)

    《Objective-C Programming Language》是一份由苹果开发者库提供的官方文档,旨在为开发者提供关于Objective-C编程语言的全面指南。该文档不仅覆盖了Objective-C的基础概念和语法,还深入探讨了其高级特性以及在实际...

    Object-C语言教程&案例&相关项目资源

    尽管Swift已经逐渐取代了Objective-C成为主流,但了解Objective-C仍然对于理解和维护现有的大量Objective-C代码库至关重要。掌握上述核心概念和方法不仅可以帮助开发者更好地理解Objective-C,也能在实际项目中灵活...

    iOS-Xcode制作静态库

    在iOS开发中,Xcode制作静态库是一种常见的技术实践,它可以帮助开发者封装代码,提高代码重用性,减少项目体积,提升应用性能。本篇将详细介绍如何使用Xcode创建和使用静态库。 首先,理解静态库的概念至关重要。...

    objective-c

    Objective-C作为一种成熟的面向对象编程语言,拥有丰富的库支持和强大的社区。但同时也存在一些缺点,如相对复杂的内存管理机制。 #### 更多资讯 Objective-C的学习资源非常丰富,除了官方文档之外,还有大量的在线...

    Objective-C面试题.pdf

    - **异常**:Objective-C支持C语言风格的错误处理,但在iOS开发中较少使用。 #### 二、中级技术题 1. **Category与Extension**: - **Category**:为现有类添加新方法的一种方式,不改变原始类定义。 - **...

    FFmpeg-iOS-build-script-master.zip_Objective-C_ffmpeg_ios

    - 编译:使用Xcode的命令行工具或者CMake进行编译,生成静态库或动态库。 - 集成:将编译好的FFmpeg库添加到iOS项目的依赖库中,并更新项目的配置文件。 这个压缩包中的"FFmpeg-iOS-build-script-master"目录可能...

    基于objective-c将JSON格式化输出为模型的属性

    总的来说,Objective-C通过内置的`NSJSONSerialization`和第三方库提供了解析JSON并将其映射到模型对象的机制。这使得我们能够轻松地处理从服务器获取的数据,为iOS和macOS应用提供丰富的用户体验。在实际开发中,...

    OCMock 是模拟对象的 Objective-C 实现 .rar

    在 Objective-C 中,类是不能直接被模拟的,因为它们是静态类型语言。然而,OCMock 提供了一种机制来创建动态的对象,这些对象可以模仿真实类的行为,以便于在测试中使用。这主要通过以下几种方式实现: 1. **Mock ...

Global site tag (gtag.js) - Google Analytics