【转】iOS开发路线简述
简单看了下楼主说的很详细,尤其是最后面那个图描述很直观,让想学习ISO开发的程序猿很清晰每个步骤学习的内容,在此收藏下。
iOS系统以及iPhone的出来都要感谢乔布斯,一个完美主义者,从如此优秀的iOS系统和iPhone就可以看出来。下面就简单介绍一下我iOS开发的感受,也是学习iOS开发的一个体系架构。
1 iOS开发环境
1.1 开发环境
标准的配置是MacOSX+Xcode。
MacOSX的话首选用苹果电脑,macmini最便宜只要4000多就好了然后自己配一个显示器,macbookpro 也可以,不推荐使用macbookair。还有很多人使用黑苹果或者虚拟机甚至在windows上装一些工具都是不可取的。
另外官翻版的也可以去买,很便宜就可以买到好机子,官翻版。
Xcode这个开发工具自己继承了iPhoneSDK,所以不用单独下载SDK。调试的模拟器可以从Xcode里面下载不同版本的模拟器。
1.2 账号 证书 上架 等
iOS调试真机是需要证书的,所以这个时候需要从申请一个iDP账号,不过仅仅需要调试的话,某宝上有很多卖20几块的证书。应用上传appstore的话有很多种方法,证书分为企业和个人,个人的可以到appstore,企业是不可以的。
2 Obejct-C语言
Object-C语言通常写作objective-c或者obj-c,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言, 它能够和C、C++混合编程。OC是一个编译型的语言,通过gcc编译器把object-c代码编译成机器指令。关于基本概念可以参考,十分钟让你明白Objective-C的语法(和Java、C++的对比) 。
2.1动态特性
Object-C具备一些动态特性,包括动态类型、动态绑定、动态加载,也就是Object-C在运行时才能知道一些对象的类型以及所调用的方法。
2.2内存管理
OC是使用引用计数原则,现在OC引入ARC(自动引用计数原则)。引用计数有几个规则,一是谁创建谁释放,通过alloc、new和copy创建对象, 然后调用release或者autorelease去释放对象,第二是,除了alloc、new和copy之外创建的对象都是autorelease的, 第三谁retain了,谁释放。
2.3 一些语言特性
OC首先是只有单一继承,没有多重继承。
属性访问,@property加上@synthesize使用后能够自动生成setter和getter方法。
category,中文一般叫做类别,他能够为现有的类提供新的方法,他将类的实现分散到多个不同的文件或框架中,创建对私有方法的前向引用,向对象添加非正式协议。
block语法,块,他通常代表小段的自包含的代码片段,因此,他们封装为可以并行执行的工作单元额外有用,还可以用于在集合中进行遍历,或者在其他操作 完成时作为回调。块代替传统回调函数的意义有两个:一是他们允许在方法实现的调用中就近写入代码,而且块经常被作为框架中一些方法的参数;二是他们可以访 问本地变量。
OC中有很多类是以NS开头的,那是cocoa层里面Foundation框架的类库。
3 iOS开发
3.1 iOS操作系统简介
iOS的系统架构分为四个层次:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)。每层都包含很多系统框架,例如著名的UIKit框架就是在cocoa touch。
3.2 常用的设计模式
最基础的是MVC模式,就是把项目分为Model、View和Controller三层进行管理。
常用的还有代理模式,通过协议和block实现。观察者模式的话体现在了KVO和notification上了。target-action模式是OC中 非常常见的对象之间方法调用的方式,一般在和UI打交道的时候处理各种GUI上的事件会利用到这种模式,他通常会有一个target作为消息的接收者。单 例模式,使得单例对象在项目中只会创建一次。工厂模式,是一个类族的概念,很符合敏捷软件开发的开放封闭原则。关于各种设计模式,可以看卡奴达摩的专栏。
3.3 Interface Builder和Storyboard
一般写iOS的UI有三种方式。xib,Storyboard以及代码创建。
我之前自学用了一会的xib,之后一直用代码创建,代码更容易区做多语言版本,而且
xib启动需要事件比用代码直接写慢,xib文件比代码建立UI文件也大。
具体对比可以看喵神的博客代码手写,xib和StoryBoard间的博弈
3.4 常用系统框架和第三方库
UIKit是最常用的框架,主要是用来做UI的。包括视图UIButton、UILabel,控制器UIViewController等,还有一些触摸事件、手势等。
QuartzCore、CoreAnimation框架是一些绘图、动画的类库。
第三方库的话,可以查看github上object -c的仓库排名,Search · GitHub 。
3.5数据存储
iOS数据存储主要有四种方式。
NSKeyedArchiver,采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议。归档形式保存数据只能一次性归档保存以及一次性解压,只能针对小量谁,而且数据操作笨拙,即如果想改动数据的某一小部分,需要解压整个数据或者归档整个数据。
NSUserDefaults,用来保存应用程序设置和属性。
第三种,Write写入文件。
第四种,相对前两种更为复杂,但也最好用。SQLite,可以自己封装,也可以使用FMDataBase等第三方封装库,还可以使用系统的CoreData。
3.6数据通信
iOS的数据通信有几种方式,应用层的HTTP,以及传输层的封装TCP或者UDP的socket接口,还有就是蓝牙通讯。
HTTP的网络服务一般可以用post、get或者soap等方式请求数据,可以用系统的NSURL也可以用第三方类库(MKNetWorkKit、AFNetWorking),这两种类库都可以做缓存,数据交换的格式一般有JSon和xml。
socket可以通过c语言的socket和CoreFoundation框架的CFNetwork实现,也可以用第三方类库asyncsocket。
蓝牙4.0的话使用的是CoreBluetooth框架。
3.7多线程编程
iOS的多线程有NSThread、NSOperation以及GCD。NSThread比其他两个轻量级,但是需要自己管理线程的生命周期,线程同步。 线程同步对数据加锁会有一定的系统开销。operation则不需要关心线程管理,GCD是一个替代NSThread和operation的技术。
3.8iPad开发
iPad和iPhone开发是异曲同工,但是不要试图去适配iPad和iPhone,因为他们的UI差别太大。
3.9其他
iOS的地图是使用MapKit框架,定位用CoreLocation。
iOS有一个云端机制iCloud,iOS还有一个推送机制,可以由服务器推送消息到手机应用程序,iOS还可以做本地化。
iOS有一些内置的传感器可以利用起来编程,比如三轴加速传感器,用来测加速度的,还有陀螺感应器,测角速度,感知移动的。
关于iOS的相机、相册以及音视频都有相应的类库。
4 工具
第一是多人协作的问题,你可以用svn或者git,git是比较流行的,但是大多数的公司还在用svn;
第二,iOS的数据持久化有很多方案,最高效的就是sqlite,在mac上有很多sqlite的可视化管理工具,我用的是sqlitemanager。
第三,关于查看模拟器或者真机的沙盒内容,模拟器可以使用SimPholders,真机可以用ifunbox。
第四,屏幕取色工具,sip。
第五,另外xcode也可以安装很多辅助工具,例如,格式化xcode代码的ClangFormat,第三方库管理工具CocoaPods,压力测试工具uiautomonkey。
第六,移动开发有一些常用的平台的,比提供社会化分享、统计分析等的友盟,sharesdk;内测平台fir.im,蒲公英;云测平台testin;广告平台google的admob
5 书籍 网站推荐
关于看书,对于某一个东西入门的化,其实不适合看书,或者你想看随便挑一本入门的书就跟着看就好了。
code4app,iOS开发社区 – 开源中国社区,cocoachina是国内常用的三大代码库网站,国外我会上版本控制的网站github,并且欢迎关注我的github,coderyi
这里有一个别人整理的iOS学习资料,
马上着手开发 iOS 应用程序 (apple官方整理),
Aufree/trip-to-iOS · GitHub(资料最全) ,
6 iOS学习路线图
最后附赠一张传智播客的iOS学习路线图 ,这一些东西只是iOS开发的冰山一角,哪一东西要做好都要学很多东西,学好最重要的就是你对他的热情,路漫漫其修远兮,吾将上下而求索。
原文:http://www.itjhwd.com/ioskaiflx/
【转】iOS开发路线简述的更多相关文章
- iOS开发路线简述
1 iOS开发环境1.1 开发环境标准的配置是MacOSX+Xcode.MacOSX的话首选用苹果电脑,Macmini最便宜只要4000多就好了然后自己配一个显示器,MacBookPro 也可以,不推 ...
- iOS开发入门教程
iOS开发入门教程 http://my.oschina.net/mailzwj/blog/133273 摘要 iOS开发入门教程,从创建项目到运行项目,包括OC基础,调试,模拟器设置等相关知识. iO ...
- IOS开发入门教程-总结篇-写给狂热的编程爱好者们
程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一 ...
- 给iOS开发新手送点福利,简述文本属性Attributes的用法
给iOS开发新手送点福利,简述文本属性Attributes的用法 文本属性Attributes 1.NSKernAttributeName: @10 调整字句 kerning 字句调整 2.NSF ...
- iOS开发——iOS学习路线
iOS学习路线 版权声明:欢迎转载,请贴上源地址:http://www.cnblogs.com/iCocos/(iOS梦工厂) 一:自学初步学习路线 二:高级完整学习路线 三:完整知识与能力体系 思维 ...
- 从Swift学习iOS开发的路线指引
本文主要是楼主近段时间从Swift语法开始自学iOS开发的流程总结,PS 一个前提,楼主的生存环境中买不到一本iOS开发中文教程,所以基本都是百度摸索出来的 >_< 主要流程 学习Swif ...
- 简述 Ruby 与 DSL 在 iOS 开发中的运用
阅读本文不需要预先掌握 Ruby 与 DSL 相关的知识 何为 DSL DSL(Domain Specific Language) 翻译成中文就是:"领域特定语言".首先,从定义就 ...
- 【技术分享会】 iOS开发简述
前言 Objective-C(简称OC)也是面向对象的编程语言,运用的许多面向对象的编程思想和C# . Java .C++等变成语言都是相通的: 本次技术讲座主要讲一些设计模式.设计思想等计算机语言通 ...
- iOS之一个iOS开发人员完整的学习路线
iOS开发能力 掌握(最好是精通)OC语言和runtime各种细节(读过相关的clang源码和runtime源码为佳).精通基本的framework(Foundation,UIKit等,平时干活用得最 ...
随机推荐
- equal与==区别
对于String中的“equal方法”和“==”一直有点混肴,今天重新看了一下他们两点的区别,记录下来让自己以后不在忘记! 先说“==”: “==”是用来比较两个String对象在内存中的存放地址是否 ...
- ubuntu 12.04 安装snort acidbase相关注意事项
一.安装Snort 1.安装libpcap 1 apt-get install libpcap-dev 2.安装snort 1 2 apt-get install snort apt-get inst ...
- Sea.Js使用入门
1.Sea.Js是什么 seajs相对于RequireJs与LabJS就比较年轻,2010年玉伯发起了这个开源项目,SeaJS遵循CMD规范,与RequireJS类似,同样做为模块加载器.示例 // ...
- VirtualBox中CentOS通过Host-Only方式实现虚拟机主机互相访问、共享上网
VirtualBox常用的网络配置如下: 连接方式 主机访问虚拟机 虚拟机访问主机 虚拟机访问虚拟机 虚拟机访问外网 说明 网络地址转换(NAT) 不支持 支持 不支持 支持 默认连接方式,虚拟IP, ...
- Linux 下 git的使用
参考链接:http://www.liaoxuefeng.com 安装 安装步骤: ①先给操作系统装入git工具,以Linux为例: $ sudo apt-get install git ②去githu ...
- 在线的代码托管平台 coding.net ===中国扩展版github
coding.net 是国内新兴的一个项目管理平台,功能主要包括:代码托管.在线运行环境.监控代码质量,兼有一定的社交功能. 在线运行环境支持Java.Ruby.Node.js.PHP.Python. ...
- java工程开发之图形化界面之(第二课)
上一节主要是讨论小的应用程序,在这里我们将采用一种全新的方式来重新编写它. 在这里我们注重关注JFrame和JOptionPane.这些类提供了在JAVA应用程序使用图形的方法以及在JAVA程序中对I ...
- CF 299 div2 C 博弈
http://codeforces.com/contest/299/problem/C 题目大意: 给两个0,1串保证长度都是2*n(偶数),问,Yaroslav, Andrey按照顺序取,首先是ya ...
- mysql建库
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE 的语法: CRE ...
- 转 android学习—— context 和 getApplicationContext()
在android中常常会遇到与context有关的内容 浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder( ...