iOS静态库实现学习(第一部分)

前言

    对于新手程序员来说,可能还不了解什么是静态库,还有一个相对应的概念叫动态库。那开篇我们先了解一下两个库的基本概念,什么是静态库,什么是动态库。

概念

    静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝。文件后缀:.a或者.framework

    动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。文件后缀:.dylib或者.framework

    所以我们一般可以在文件后缀上可以区分哪些是静态库,哪些是动态库。但是我们要注意的是,我们使用动态库必须是苹果自己设计的动态库,自制的在审核的时候会被拒。别问为什么,苹果有时候就是这么的强势。

实现方法

     一、新建项目,这个就不多说了,选择“Cocoa Touch Static Library”,下一步为你的静态库项目命名。

iOS静态库实现学习(第一部分)_第1张图片
别选择错咯


iOS静态库实现学习(第一部分)_第2张图片
新建完成,在Products里的文件就是以后我们要用的静态库。上面是需要打包到进静态库的实现代码


二、编写实现代码。在外部传入简单的字符串,然后弹出一个AlertView

首先,我们要提供给外部调用方一个入口。这个入口的作用通俗一点就是一本说明书,在这个入口中,要提供调用静态库的方法,需要传入的参数。当使用正确的方法和传入正确的参数后就可以使用静态库了。我们用一个.h文件来作为静态库的入口。

demo中“StaticLibDemo.h”就是这个静态库的入口。.m就是具体实现的方法


iOS静态库实现学习(第一部分)_第3张图片
StaticLibDemo.h

然后在.m中我们实现弹框。

iOS静态库实现学习(第一部分)_第4张图片
StaticLibDemo.m

接着,在配置项我们完成对外部入口.h的配置。


iOS静态库实现学习(第一部分)_第5张图片

最后,build一下就完工了。

不过这里我们主要一个重点信息:

静态库文件的版本(4种)

真机-Debug版本

真机-Release版本

模拟器-Debug版本

模拟器-Release版本


这个是模拟器版本。只能在模拟器使用,真机调试会报错


这个是真机版本。只能在真机使用,模拟器调试会报错

如果既想要在真机调试又想在模拟器调试,那怎么办?

答案很简单,在mac 终端输入一串命令就可以了。

lipo -createDebug-iphoneos/xxx.aDebug-iphonesimulator/xxx.a -outputxxx.a



iOS静态库实现学习(第一部分)_第6张图片
这个就是我们最终的静态库

Demo实现


iOS静态库实现学习(第一部分)_第7张图片
导入静态库文件和暴露给外部的.h文件


iOS静态库实现学习(第一部分)_第8张图片

运行一下,完美

下一篇介绍如何在workspace里实现静态库的调试

你可能感兴趣的:(iOS静态库实现学习(第一部分))