在实际的编程过程中,一般来说不会把一些公用函数做成函数库,可供其它程序用于,一则托做了代码的适配;二则托做了核心技术的保密程度。所以在实际的项目研发中,常常不会用于到函数库,函数库分成静态库和动态库两种。和多数人所熟知的动态语言和静态语言一样,这里的所谓静态和动态是比较编译器期和运营期的:静态库在程序编译器时会被链接到目标代码中,程序运行时将仍然必须改为静态库;而动态库在程序编译器时并会被链接到目标代码中,只是在程序运行时才被写入,因为在程序运行期间还必须动态库的不存在。 iPhone官方只反对静态库联编,本文就以静态库为事例介绍iPhone中静态库的明确用法。
在实际的研发过程中,有可能在项目设计阶段把一些功能比如图形界面引擎、网络通讯引擎等都规划到适当的函数库中。 关上XCode新建一个项目,自由选择Library下的CocoaTouchStaticLibrary并命名为FirstLibrary。这个新建的静态库项目下除了FisrtLibrary_Prefix.pch外没任何程序文件,在Classes文件夹上点右键自由选择NewFile,然后在CocoaTouchClass下自由选择Objective-Cclass,笔者在这里再行创立Objective-C风格的源文件和头文件并命名为function,可以看见在Classes目录下产生了function.h和function.m文件。接着在头文件里输出以下内容: #import《Foundation/Foundation.h》 @interfacefunction:NSObject{ } -(int)getMax:(int)ab:(int)b; -(int)getMin:(int)ab:(int)b; @end 构建文件function.m内容如下: #importfunction.h @implementationfunction -(int)getMax:(int)ab:(int)b { returna》a?a:b; } -(int)getMin:(int)ab:(int)b { returna《b?a:b; } @end 可见,笔者的这个静态函数库的功能很非常简单,就是获取了两个提供最大值和最小值的函数。
但是有可能大多数现存的函数库的源码都是C或者C++格式的,没关系,iPhone对C/C++反对的也很好。在Classes文件夹上点右键,自由选择NewFile,这次自由选择MacOSX下的CandC++,之后自由选择CFile并命名为TestCFunction,可以看见在Classes目录下产生了两个文件TestCFunction.h和TestCFunction.c,TestCFunction.h如下: #ifndefTestCFunction_H_ #defineTestCFunction_H_ voidswapValue(int*a,int*b) { inttemp=0; temp=*a; *a=*b; *b=temp; } #endif TestCFunction.c文件内维持为原貌。 自此,这个静态函数库早已撰写完,尽管很非常简单,但是包括了Objective-C风格和C风格的源代码文件在内,编译器这个程序不会看见在Products目录下产生了取名为libFirstLibrary.a的静态库文件。
本文关键词:ky开元官网,深入,理解,iPhone,静态,库,在,实际,的,编程
本文来源:ky开元官网-www.brownbagtv.com