iOS开发总结

时间:2024-01-18 23:20:02

最近在工作中使用Objective-C开发iOS客户端程序,它一方面和Server通讯,处理网络连接,收发报文,实现业务逻辑;另一方面为UI层提供各种业务API.

下面记录用到的相关知识点,困难,解决方法等.
1. 使用开源项目的代码,加快开发速度,而且许多开源项目功能丰富,也比较稳定.
我在开发中用到的:
1)网络:
GCD Async Socket: 功能强大的异步socket库
AFNetwork:一个轻量级的iOS网络通信类库
ASIHttpRequest: 也是一个很出名的封装了的网络库
Reachability: 苹果提供的例程, 检测手机不同网络模式下的联网情况
2)安全加密:
RSA加密: 使用Security库,网上有很多实现,需要作der证书.这儿花了很多功夫,开始使用openssl实现,但是生成的库文件因此增大1M左右, 后来优化才搞定.
MD5加密: 库CommonDigest中有实现,但是需要再稍稍封装下.
Base64加密: Google的GTMBase64 
3)日志
LumberJack,很好的日志系统
4)协议
ProtocolBuffer:一种与语言无关, 平台无关, 扩展性好的通讯协议, 数据存储的结构化串行化方法.
参考: http://blog.csdn.net/21aspnet/article/details/6594036
2. Objective-C语言相关:
开发过程其实也是学习OC的过程,因为公司项目紧,没初学几天就开始开发了.这里总结常用到的语法相关的东西,而且很容易忘了或者搞混.
1) NSData 和 NSString的定义, 初始化, 赋值, 以及二者的互相转换,而且涉及到字符串编码问题,很容易出错;
另外也经常遇到Byte和这两个之间的转换使用;
2) self, super, property, synthesise等这些语法,新手开始用总是不太清楚;
3) 指针的问题, 我原来用C开发还比较习惯, 如果原来作Java开发,则可能经常会在这儿遇到编译出错问题;
3. iOS相关:
我原来一直进行Linux server端开发,现在是手机客户端, 新的语言,开发设计过程需要经常调整思维模式.
1) 内存,文件读写传输等涉及size的要考虑;
2) iPhone手机对应多个iOS版本,客户端要求都能适应,可能会出现某个版本运行就会crash但其他版本没事的问题;
3) 手机device信息查询,特别device id的获取,iOS 6.0 还好, 5.0获取device id接口作废了,后来为了统一只好使用网卡mac地址自己生成device id了.
4) 开发的时候,使用模拟器测试,但程序最后还是跑在手机上,有可能模拟器ok,但是真机不行的问题;
比如用到自己编的静态lib库,iOS前后台处理的问题