框架搭建之一------引入ASIHttp框架
2013-05-16 16:52
260 查看
来到新公司,第一天就进入项目组,框架搭建自己做。
引入开源框架需要注意,不要从一些开源项目中,提炼他添加的 开源框架 ,比如从网上下载了一个开源项目XApp,他包含框架:SBJson,ASIHttp,AFNetWork,等,从这个项目中拷贝到自己项目中,总是有N多编译问题,主要是他对框架已经进行了修改,引用了很多自己的类,所以加到自己的项目中会很麻烦,除非自己很了解这个项目。
以下是用到的开源框架:
如何把框架添加到自己的项目中,地址: http://zyc-to.blog.163.com/blog/static/171524002011101755450253/
1.下载asihttprequest
2.
把Classes里的文件,拖到XCode中
External/Reachbility也拖进去 ->这是Apple 官方用来检查网络链接是否正常的类库
3.导入框架
SystemConfiguration.framework
MobileCoreServices.framework
CoreGraphics.framework
CFNetwork.framework
libz.1.2.3.dylib
4.添加libxml2的搜索路径
xcode4->Build Settings->Search paths->Header Searche Pahts:
${SDK_DIR}/user/include/libxml2
5.再导入框架
libxml2.dylib
6.这样就可以使用了,在使用的时候,要加入适当的头文件.
NND,因为缺少导入libxml2.dylib框架,编译的时候有22个错误,花了一下午时间,各种尝试,以为是ARC的问题,但自己的设置是NO,就是没启动ARC,最后跟其他项目中的设置各种比较,发现是没导入libxml2.dylib框架,光加了搜索路径。
报错信息:
Undefined symbols for architecture i386:
"_deflateInit2_", referenced from:
-[ASIDataCompressor setupStream] in ASIDataCompressor.o
"_deflateEnd", referenced from:
-[ASIDataCompressor closeStream] in ASIDataCompressor.o
"_deflate", referenced from:
-[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
"_inflateInit2_", referenced from:
-[ASIDataDecompressor setupStream] in ASIDataDecompressor.o
"_inflateEnd", referenced from:
-[ASIDataDecompressor closeStream] in ASIDataDecompressor.o
"_inflate", referenced from:
-[ASIDataDecompressor uncompressBytes:length:error:] in ASIDataDecompressor.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如果程序启动了ARC,需要对文件设置-fno-objc-arc
ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。该机制在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机制。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(Static
Analyzer)工具。
那么在xCode中经常需要导入一些外来的代码文件,如果导入的文件使用了ARC机制而你的当前项目没有使用ARC,那么xCode会给出警告,或者报错。我们该如何处理这些问题呢:
查看ARC 是否开启,"Objective-C Automatic Reference Counting"选项为YES,表示开启。
点击项目导航文件--> 选中Targets--> 选择 Build Phases --> 展开Compile Sources
这个时候,我们看到第二列的名称为:Compiler Flags
双击你所要使用ARC的文件,并输入 -fobjc-arc,
那么现在这个文件就可以在编译时使用ARC机制进行编译了。
同上,如果想让使用ARC机制的代码不使用ARC机制,只需要输入 -fno-objc-arc
分享到:
引入开源框架需要注意,不要从一些开源项目中,提炼他添加的 开源框架 ,比如从网上下载了一个开源项目XApp,他包含框架:SBJson,ASIHttp,AFNetWork,等,从这个项目中拷贝到自己项目中,总是有N多编译问题,主要是他对框架已经进行了修改,引用了很多自己的类,所以加到自己的项目中会很麻烦,除非自己很了解这个项目。
以下是用到的开源框架:
iOS ASI http 框架详解 ,类库下载地址: http://allseeing-i.com/ASIHTTPRequest/
如何把框架添加到自己的项目中,地址: http://zyc-to.blog.163.com/blog/static/171524002011101755450253/
添加asihttprequest框架到工程中使用
1.下载asihttprequest2.
把Classes里的文件,拖到XCode中
External/Reachbility也拖进去 ->这是Apple 官方用来检查网络链接是否正常的类库
3.导入框架
SystemConfiguration.framework
MobileCoreServices.framework
CoreGraphics.framework
CFNetwork.framework
libz.1.2.3.dylib
4.添加libxml2的搜索路径
xcode4->Build Settings->Search paths->Header Searche Pahts:
${SDK_DIR}/user/include/libxml2
5.再导入框架
libxml2.dylib
6.这样就可以使用了,在使用的时候,要加入适当的头文件.
NND,因为缺少导入libxml2.dylib框架,编译的时候有22个错误,花了一下午时间,各种尝试,以为是ARC的问题,但自己的设置是NO,就是没启动ARC,最后跟其他项目中的设置各种比较,发现是没导入libxml2.dylib框架,光加了搜索路径。
报错信息:
Undefined symbols for architecture i386:
"_deflateInit2_", referenced from:
-[ASIDataCompressor setupStream] in ASIDataCompressor.o
"_deflateEnd", referenced from:
-[ASIDataCompressor closeStream] in ASIDataCompressor.o
"_deflate", referenced from:
-[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
"_inflateInit2_", referenced from:
-[ASIDataDecompressor setupStream] in ASIDataDecompressor.o
"_inflateEnd", referenced from:
-[ASIDataDecompressor closeStream] in ASIDataDecompressor.o
"_inflate", referenced from:
-[ASIDataDecompressor uncompressBytes:length:error:] in ASIDataDecompressor.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如果程序启动了ARC,需要对文件设置-fno-objc-arc
ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。该机制在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机制。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(Static
Analyzer)工具。
那么在xCode中经常需要导入一些外来的代码文件,如果导入的文件使用了ARC机制而你的当前项目没有使用ARC,那么xCode会给出警告,或者报错。我们该如何处理这些问题呢:
查看ARC 是否开启,"Objective-C Automatic Reference Counting"选项为YES,表示开启。
点击项目导航文件--> 选中Targets--> 选择 Build Phases --> 展开Compile Sources
这个时候,我们看到第二列的名称为:Compiler Flags
双击你所要使用ARC的文件,并输入 -fobjc-arc,
那么现在这个文件就可以在编译时使用ARC机制进行编译了。
同上,如果想让使用ARC机制的代码不使用ARC机制,只需要输入 -fno-objc-arc
分享到:
相关文章推荐
- 框架搭建之一------引入ASIHttp框架
- iOS学习笔记23-框架搭建之一------引入ASIHttp框架
- [前端框架搭建]requirejs+jquery+bootstarp+Angular的前端组合框架搭建详解(1)-----框架的引入与选择
- 搭建自己的框架之3:项目中引入Dagger2&Dagger.android
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】
- android MVP + dagger2 + Retrofit + Rxjava+okhttp android基础项目框架搭建(2)--之MVP引入
- 框架搭建之二--引入SDWebImage
- (二)安卓框架搭建之项目Butterknife引入,Application的简单封装
- android MVP + dagger2 + Retrofit + Rxjava+okhttp android基础项目框架搭建(1)--之Dagger2引入
- 引入ASI框架,前期配置注意点。
- 从框架到完整项目搭建,实战项目《约个球》(3)-为library引入超全的工具类
- (七)安卓框架搭建之其他必备要素的封装或引入
- Extjs4.X--开发后台管理系统--框架搭建
- Spring MVC 框架搭建及详解
- .net转php laraval框架学习系列(一) 环境搭建
- 使用maven搭建SSM完整框架
- 怎样从0开始搭建一个测试框架_7——接口
- MyEclipse10+Struts2.1+Spring3.3+Hibernate3.3全注解框架搭建.docx
- Python Scrapy 框架的搭建(windows32 位操作系统) 2015.10.22
- 快速搭建一个成熟,强壮的App框架