首页 > IOS频道 > 【IOS研究院之应用开发】 > IOS研究院之使用Xcode4制作静态库详解(五)
2012
05-01

IOS研究院之使用Xcode4制作静态库详解(五)

注意:首先确保你的XCODE4使用IOS5,否则请下载IOS5在继续阅读。


IOS程序是由Objective-c语言构成,而是Objective-c语言中每一个类又分成 .h .m 文件。静态库可以将这些程序的类封装成一个.a文件,第三方应用程序只需要拿到这个.a文件和代码对应的.h文件即可使用静态库中封装的方法。总的来说IOS静态库适合去制作第三方提供的SDK,废话不多说了我们直接进正题。
首先打开Xcode4创建一个静态库工程,如下图选择Framework&Library ->Cocoa Touch Static Library (创建静态库),点击右下角按钮“next”继续完成创建。
IOS研究院之使用Xcode4制作静态库详解(五) - 雨松MOMO程序研究院 - 1
工程创建完毕后,我们开始编写代码。我们创建一个UIView类用来显示一张图片,并且点击该视图后打开一个网址。

创建视图类的.h文件

 

创建视图类的.m文件
显示的图片资源为通过URL下载后谷歌的LOGO,点击该LOGO视图后程序将打开百度的主页。

 

到这一步静态库中的代码我们已经写完,现在我们开始制作静态库。静态库的制作方法可分为两种:第一种为在真机上使用的静态库,第二种为在模拟器中使用的静态库。这两种方法制作起来有点小区别,请大家一定看好了,别眨眼睛喔,我们开始从模拟器入手。
如图,先选择模拟器iPhone 5.0 Simulator,如果你的XCODE4不是IOS5版本那么你将没有这个选项,然后Build工程,构建工程完毕后libSDKLib.a静态库文件遍生成了出来, 选择该文件鼠标右键找到它。
IOS研究院之使用Xcode4制作静态库详解(五) - 雨松MOMO程序研究院 - 2
找到文件以后,默认为Debug-iphoneos / libsdklib.a ,但是这个文件是不能在模拟器中使用的,并且它也不能在真机中使用。你需要选择下面Debug-iphoneosimulator / libsdklib.a这个文件,将libSDKLib.a与对应MyView.h头文件拖拽入使用它的工程当中。
IOS研究院之使用Xcode4制作静态库详解(五) - 雨松MOMO程序研究院 - 3
接下来创建一个普通的IOS工程,先选择模拟器运行 iPhone5.0 Simulator ,然后将libSDKLib.a 与MyView.h拖拽添加至程序当中即可。
IOS研究院之使用Xcode4制作静态库详解(五) - 雨松MOMO程序研究院 - 4
运行工程即可看到效果,本例中通过URL加载了一张谷歌的LOGO,触摸点击该视图后打开百度的首页。
IOS研究院之使用Xcode4制作静态库详解(五) - 雨松MOMO程序研究院 - 5IOS研究院之使用Xcode4制作静态库详解(五) - 雨松MOMO程序研究院 - 6
调用静态库的方法如下:

OK ,到这一步我们已经将静态库顺利的应用在模拟器当中,下面我们学习如何将静态库应用在真机当中。我们再次回到制作静态库的工程当中,如图打开工程后编译环境选择IOS Device,然后构建构成即可完成。

 

IOS研究院之使用Xcode4制作静态库详解(五) - 雨松MOMO程序研究院 - 7

 

使用鼠标右键找到libSDKlib.a,这时候Debug-iphoneos / libSDKlib.a 就是可以在真机上编辑的静态库。

 

IOS研究院之使用Xcode4制作静态库详解(五) - 雨松MOMO程序研究院 - 8

 

最后将libSDKLib.a 与MyView.h拖拽添加至程序当中,连接上真机运行工程即可在真机上看到效果了。值得注意的是模拟器和真机用的libSDKLib.a必需要严格的区分开,否则程序会报错。


最后欢迎各位盆友可以和MOMO一起讨论IOS软件开发,从今天开始继续维护博客,你懂的,哇咔咔~~如果你觉得看得不清楚,MOMO附带上本章的源码下载,希望大家可以一起学习 哈哈~。哇咔咔~ MOMO愿和 大家好好学习,大家一起进步哈~!!!


最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

IOS研究院之使用Xcode4制作静态库详解(五)》有 12 条评论

  1. wk 说:

    xcode更新之后会有冲突一样,打包之前会出错,然后让重新打开xcode,但是还是报错。

  2. zhang4yu2009 说:

    -[__NSDictionaryI JSONString]: unrecognized selector sent to instance 0x7f8723764960 我做的静态库里面有JSONKit为什么报错呢

  3. 一线天 说:

    刚接触这个ios的东西,小白,还有个问题,有时发布xcode项目时它会提示in [0x00000] in (filename unknow):0 是什么意思

  4. 一线天 说:

    刚接触这个ios的东西,小白,还有个问题,有时发布xcode项目时它会提示in [0x00000] in:0 是什么意思

  5. 一线天 说:

    刚接触这个ios的东西,小白,还有个问题,有时发布xcode项目时它会提示in [0x00000]:0 是什么意思

  6. 一线天 说:

    momo,你好,请问我在unity上打包IOS在xcode发布时报下面这个错误是什么意思呢unable to restore file position to 0x00000b7c for section __DWARF.__debug_inlined (errno = 9)

  7. So_小六 说:

    这位仁兄,问个问题噢,我就是有些第三方框架的源代码工程,然后我是想把这些源码制作成静态库,让别人改不了,只能来调用,那具体是要怎么弄的呢,求指教或是给个教程可以吗

  8. ccnyou 说:

    话说帅哥你是做哪方面开发的?ios?android?

留下一个回复

你的email不会被公开。