iphone静态库

1.Apple禁止在iPhone中使用外部框架或动态链接库,要重用代码最好使用静态库.a了.

 

2.在项目中链接静态库:

把头文件拷贝到工程内或指定位置,在Head Search Paths中指定静态库的头文件路径,如 lib/header/,选择上递归属性.

把.a添加到工程中.

 

4.利用lipo 编译合并iPhone模拟器和真机通用的静态类库.

    lipo  -create   /Users/Shark/Desktop/libIMUI.d.a     /Users/Travis/Desktop/libIMUI.s.a      -output   /Users/Shark/Desktop/libIMUI.a

 

5.在静态库中使用Category的问题.

  在iPhone开发中,Category是广泛使用的一种Objective-C的特性,不过如果在静态库中如果使用Category就会遇到一些意外的崩溃,原因就是在使用静态库的应用中会无法发现库中Category的声明。

  http://kensou.me/blog/?p=197

  解决办法就是,把实现也放在头文件中,作为内联函数.缺点就是多次包含多次内联.

  或者把实现文件也提供给应用项目.

在静态库中使用 Category

http://zhenby.com/blog/2012/08/13/zai-jing-tai-ku-zhong-shi-yong-category/

Objective-C 无法识别静态库中的Category方法

http://kensou.me/blog/?p=189

加上-ObjC后,编译的时候,编译器会将库中所有涉及到某个类的内容全部加载进来,这样会导致生成体积会变大,不过这是理所当然的,因为链入的代码变多了。


使用静态库的矛盾:

.a中使用了开源源A,业务工程中也使用了A,如果业务库中不加-ObjC没问题,加了-ObjC则编译报重复;

.a中使用了类别,业务工程运行时报找不到函数。解决办法在业务工程中加上-ObjC。


6.打包图片资源到.a中

   苹果提供得静态库工程无法将图片资源导入,只能通过外加.bundle文件的方式,这样在调 试阶段也需要使用bundle文件,而每次更新bundle文件的内容时都需要重新编译bundle工程,生成新的bundle文件。
 还有一种方法:
        在图片资源不多时,可以将图片转换成base64的string,通过static方式存储。需要用的时候再通过base64解析成data,最后完成显示

http://webcodertools.com/imagetobase64converter/Create

 Since iOS 6.0 UIImage has method + imageWithData:scale:, you can pass2.0 as scale for retina.  测试在4。3,5.0ios系统上也能正常显示。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值