最近在工作中使用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前后台处理的问题

iOS开发总结的更多相关文章

  1. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  2. iOS开发系列--打造自己的“美图秀秀”

    --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...

  3. iOS开发之再探多线程编程:Grand Central Dispatch详解

    Swift3.0相关代码已在github上更新.之前关于iOS开发多线程的内容发布过一篇博客,其中介绍了NSThread.操作队列以及GCD,介绍的不够深入.今天就以GCD为主题来全面的总结一下GCD ...

  4. 总结iOS开发中的断点续传那些事儿

    前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...

  5. iOS开发系列文章(持续更新……)

    iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...

  6. iOS开发系列--App扩展开发

    概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...

  7. iOS开发系列--Swift进阶

    概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...

  8. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  9. iOS开发系列--通知与消息机制

    概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地 ...

  10. iOS开发系列--地图与定位

    概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...

随机推荐

  1. width:100%和width:auto区别

    在div父元素是body时 1.先看没有width限制的div <div style="border:1px solid red; margin-left:50px; margin-r ...

  2. 【C++11新特性】 auto关键字

    原文链接: http://blog.csdn.net/xiejingfa/article/details/50469045 熟悉脚本语言的人都知道,很多脚本语言都引入了“类型自动推断”技术:比如pyt ...

  3. python 9*9示例

    # 9*9 乘法表# def nine_nine():#     for i in range(1, 10):#         for j in range(1, i+1):#            ...

  4. css模拟下拉菜单

    <!DOCTYPE html > <head>     <meta http-equiv="Content-Type" content="t ...

  5. push(),pop(),unshift(),shift()

    1.push() 往数组末尾添加一个或多个元素,返回新的长度 2.pop() 删除数组末尾元素,数组长度减1,返回被删除的值 3.unshift() 往数组开头添加一个或多个元素,返回新的长度 4.s ...

  6. JAVA 读取配置文件 xxx.properties

    package config_demo; import java.io.InputStream; import java.util.Properties; public class UrlDemo { ...

  7. China cuts bank reserves by $100m to cushion US tariffs

    China cuts bank reserves by $100m to cushion US tariffs中国央行定向降准释放千亿美元资金China is cutting the amount o ...

  8. Hibernate 的三种状态详解

    hibernate的对象有3种状态,分别为:瞬时态(Transient).持久态(Persistent).脱管态(Detached). 处于持久态的对象也称为PO(Persistence Object ...

  9. c#栈的习题2

    —.单项选择题1.栈和队列具有相同的(    ). A.抽象数据类型     B.逻辑结构     C.存储结构     D.运算2.栈是(). A.顺序存储的线性结构     B.链式存储的非线性结 ...

  10. JDK、JRE和JAR区别(转载)

    JDK里面的工具也是用Java编写的,它们本身运行的时候也需要一套JRE,如C:/Program Files/Java/jdk1.5.x/目录下的JRE.而C:/Program Files/Java/ ...