iOS开发路线简述(转)

  对于一个ios初学者,我以为下面的文章不错,因此转给你们一块儿学习。html

  

  1 iOS开发环境ios

  1.1 开发环境git

  标准的配置是MacOSX+Xcode。github

  MacOSX的话首选用苹果电脑,macmini最便宜只要4000多就行了而后本身配一个显示器,macbookpro 也能够,不推荐使用macbookair。还有不少人使用黑苹果或者虚拟机甚至在windows上装一些工具都是不可取的。objective-c

另外官翻版的也能够去买,很便宜就能够买到好机子,官翻版sql

Xcode这个开发工具本身继承了iPhoneSDK,因此不用单独下载SDK。调试的模拟器能够从Xcode里面下载不一样版本的模拟器。编程

  1.2 帐号 证书 上架 等windows

  iOS调试真机是须要证书的,因此这个时候须要从申请一个iDP帐号,不过仅仅须要调试的话,某宝上有不少卖20几块的证书。应用上传appstore的话有不少种方法,证书分为企业和我的,我的的能够到appstore,企业是不能够的。设计模式

  2 Obejct-C语言api

  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 书籍 网站推荐

  关于看书,对于某一个东西入门的化,其实不适合看书,或者你想看随便挑一本入门的书就跟着看就行了。

  code4appiOS开发社区 – 开源中国社区cocoachina是国内经常使用的三大代码库网站,国外我会上版本控制的网站github,而且欢迎关注个人github,coderyi

  这里有一个别人整理的iOS学习资料,

  立刻着手开发 iOS 应用程序 (apple官方整理),

  Aufree/trip-to-iOS · GitHub(资料最全) ,

  iOS资源 – Code4App.com ,

  iOS开发60分钟入门 ,

  iOS开发重新手到上架

  6 iOS学习路线图

  最后附赠一张传智播客的iOS学习路线图 ,这一些东西只是iOS开发的冰山一角,哪一东西要作好都要学不少东西,学好最重要的就是你对他的热情,路漫漫其修远兮,吾将上下而求索。

iosdevstudy

相关文章
相关标签/搜索