iPhone开发技巧之网络篇(4)— 确认网络环境 3G/WIFI
iPhone开发技巧之网络篇(4)--- 确认网络环境 3G/WIFI
开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审查的。
Reachability
Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。如下图:
然后将 SystemConfiguration.framework 添加进工程:
Reachability 中定义了3种网络状态。
iPhone开发技巧之网络篇(3)— 使用NSOperation建立多任务网络连接
iPhone开发技巧之网络篇(3)--- 使用NSOperation建立多任务网络连接
在网络应用程序中,经常需要多任务连接来提高程序的性能。比如多任务下载,多任务HTTP请求等,即线程控制模型中的工作群模型。使用 NSOperation 可以很容易实现这个功能。下面就以使用NSOperation处理并行的HTTP请求为例子,说明其用法。
首先准备一个 NSOperation 的子类,用于处理 HTTP 请求。
1 2 3 4 5 6 7 8
@interface RequestOperation : NSOperation { NSURLRequest* _request; NSMutableData* _data; } - (id)initWithRequest:(NSURLRequest *)request; @end
下面是实现:
iPhone开发技巧之网络篇(2)— Web服务
iPhone开发技巧之网络篇(2)--- Web服务
说到XML不得不提WEB应用中最常见的几种通讯规范:SOAP,XML-RPC,REST,WSDL,JSON等,他们都是基于XML协定的。在这里介绍几种处理web应用中可以利用的程序库:
现在云计算技术很火,无论是类似 Google App Engine 的 PAAS 还是 Amazon EC2 的 IAAS 服务或者是类似 Twitter 的 SAAS。不可避免的都需要与 XML 打交道。所以掌握了这个标准,开发网络应用就不怕了。
关于这些协议的具体意义这里就不详述了,可查阅相关文档。这里只介绍一些封装好的类库,以便于开发。
WSDL2ObjC
WSDL2ObjC用来处理SOAP类型的web服务。同样也是基于libxml2的Objecti[......]
iPhone开发技巧之网络篇(1)— 解析XML
iPhone开发技巧之网络篇(1)--- 解析XML
开发 iPhone 上的网络应用程序的时候时常需要解析XML文档,比如web应用中的SOAP,REST,RSS信息等都是以XML为基础的。掌握XML解析的技术是很重要的。这里我将为大家介绍一下iPhone下解析XML的几种方法,并比较其性能。
iPhone的XML库
iPhone中标准的XML解析库有两个,分贝是libxml2和NSXMLParser。
libxml2[......]
iPhone开发技巧之工具篇(3)— 使用clang静态解析Objective-C程序
iPhone开发技巧之工具篇(3)--- 使用clang静态解析Objective-C程序
这一回介绍一下 clang,一个用来静态解析程序的工具。
clang 是 LLVM 编译器项目中的其中之一。LLVM 支持 C/C++/Objective-C 语言,并有许多 Apple 的工程师加入这个项目。
静态解析程序
静态解析是指不用执行程序,而是从程序的代码构成来分析错误和预测问题。比如Java中的FindBugs,C++中的prefast等。通过这些工具可以一定程度的减少程序中的错误数量。
一般静态解析,分析以下几类问题:
- 代码形式,名称是否违规
- 警告容易出错的代码
- 警告程序运行时可能出现问题的代码
比如容易引起内存泄漏的代码,会被其检测出,提示你修正。
用clang来解析iPh[......]
iPhone开发技巧之工具篇(2)— Accessorizer自动化生成代码
iPhone开发技巧之工具篇(2)--- Accessorizer自动化生成代码的工具
Accessorizer 是一款自动化代码的工具,可以为你自动生成 property,Keyed Archiving 等定型的代码,省去了我们不少开发的时间。
使用方法在作者的站点上有video演示,可以了解更多,这里只介绍一些基本的使用方法。
- 首先设置自己的编码风格
- 启动 Accessorizer
- 双击 Xcode 中 @interface 的大括号,选择实例
- 按下 Cmd+1
- 自动弹出 Accessorizer ,点击 Cmd+TAB 退回到 Xcode
- 代码已经自动拷贝到剪切板,粘贴到合适的地方
iPhone开发技巧之工具篇(1)— 将XIB文件转换为Objective-C源程序
iPhone开发技巧之工具篇(1)--- 将XIB文件转换为Objective-C源程序
nib2objc是一个小巧的转换工具,可以将XIB文件自动转换为Objective-C的源代码文件。
通常,考虑到程序的效率时,才将XIB直接转换为源代码文件。但是这样一来,通过Interface Builder设定的实例变量与行为方法的接续也没有了,需要从新手写。但是,该工具的源代码是公开的,稍加修饰,就能完成大部分工作。
使用的时候,首先下载的工程代码并用XCode编译一下,会生成一个命令行程序文件 nib2objc。然后如下所示执行转换:
1
$ nib2objc WebView.xib > WebView.m
像是上面view转换后会输出以下代码:
1 2 3 4 5 6 7[......]
iPhone开发技巧之环境篇(8)— 使用非公开的API
iPhone开发技巧之环境篇(8)--- 使用非公开的API
苹果官方发布的iPhone SDK对底层API进行了很大的限制。官方的SDK是在某些底层API之上增加了一层针对开发者的类库,供开发者使用,这些非公开的底层API可以用 class-dump 等工具直接展开,这样开发者就可以通过展开的头文件定义直接与iPhone中的所有框架库进行对话.
但是这些API是 undocumented 的,需要自己琢磨使用的方法。下面就介绍一下 Private Framework API 头文件的生成方法。
生成非公开API的头文件
下载 class-dump 和 dump.pl , 并将 class-dump 拷贝到 /usr/local/bin 下, 如果没有执行权限,用 chmod 加上。dump.pl 放到任意适当的位置,同样加上[......]
iPhone开发技巧之环境篇(7)— 区分不同版本的iPhone
iPhone开发技巧之环境篇(7)--- 区分不同版本的iPhone
执行环境
可以从 UIDevice 的属性 model 得到在现在执行的环境。例子如下:
1 2 3 4 5 6 7 8 9 10
NSString *modelname = [[UIDevice currentDevice]model]; if ([modelname isEqualToString:@"iPhone"]) { // iPhone } if ([modelname isEqualToString:@"IPod Touch"]) { // iPod touch } if ([modelname isEqualToString[......]
iPhone开发技巧之环境篇(6)— 创建工程模板
iPhone开发技巧之环境篇(6)--- 创建工程模板
经常用 Visual Studio 的朋友可能都熟悉该IDE中的向导模板,类似的项目工程都有固定的模式,框架,库结构等。在开发iPhone 的时候也可以自己定制这样的模板,提高我们的开发效率。
这一回就介绍一下创建模板的方法。
拷贝
iPhone应用程序的模板一般保存在下面的路径:
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/ Project Templates/Application
首先拷贝这个文件夹到下面的路径,作为我们的基础模板。
~/Library/Application Support/Developer/Shared/Xcode/Project Templates/ Applicati[......]