iOS开发路线简述

如果您觉得本站对您能有帮助,您可以使用RSS或邮件方式订阅本站,这样您将能在第一时间获取本站信息。

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的话有很多种方法,证书分为299$和99$,99$的可以到AppStore,299$是不可以的。

2、Obejctive-C语言

Obejctive-C语言通常写作Object-C或者Obj-C,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言,它能够和C、C++混合编程。Obejctive-C是一个编译型的语言,通过GCC编译器把Obejctive-C代码编译成机器指令。关于基本概念可以参考,十分钟让你明白Objective-C的语法(和Java、C++的对比) 。

对于Swift这门新的语言,我暂时还没有去涉及,建议还是学学Obejctive-C。

2.1动态特性

Obejctive-C具备一些动态特性,包括动态类型、动态绑定、动态加载,也就是Obejctive-C在运行时才能知道一些对象的类型以及所调用的方法。

2.2内存管理

Obejctive-C是使用引用计数原则,现在Obejctive-C引入ARC(自动引用计数原则)。引用计数有几个规则,一是谁创建谁释放,通过alloc、new和copy创建对象,然后调用release或者autorelease去释放对象,第二是,除了alloc、new和copy之外创建的对象都是autorelease的,第三谁retain了,谁释放。

2.3 一些语言特性

Obejctive-C首先是只有单一继承,没有多重继承。

属性访问,@property加上@synthesize使用后能够自动生成setter和getter方法。

Category,中文一般叫做类别,他能够为现有的类提供新的方法,他将类的实现分散到多个不同的文件或框架中,创建对私有方法的前向引用,向对象添加非正式协议。

block语法,块,他通常代表小段的自包含的代码片段,因此,他们封装为可以并行执行的工作单元额外有用,还可以用于在集合中进行遍历,或者在其他操作完成时作为回调。块代替传统回调函数的意义有两个:一是他们允许在方法实现的调用中就近写入代码,而且块经常被作为框架中一些方法的参数;二是他们可以访问本地变量。

Obejctive-C中有很多类是以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与常用的设计模式

MVC并不是一种设计模式,它是一种软件架构模式,就是把项目分为Mod

l、View和Controller三层进行管理。

常用的设计模式有代理模式,通过协议和block实现。观察者模式的话体现在了KVO和NSNotification上了。Target-Action模式是Objective-C中非常常见的对象之间方法调用的方式,一般在和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上Objective-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比其他两个轻量级,但是需要自己管理线程的生命周期,线程同步。线程同步对数据加锁会有一定的系统开销。NSOperation则不需要关心线程管理,GCD是一个替代NSThread和NSOperation的技术。

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。

第四,关于抓包工具Charles很多人喜欢用,巧神有很详细的介绍,网络封包分析工具Charles。

第五,另外Xcode也可以安装很多辅助工具,例如,第三方库管理工具CocoaPods,压力测试工具UIAutoMonkey。

第六,Xcode也可以安装很多插件,首先介绍一个插件管理的插件Alcatraz,用它来下载以及管理所有插件,我常用的插件有,格式化Xcode代码的ClangFormat,图片资源提示的KSImageNamed,颜色辅助ColorSense等。

第七,移动开发有一些常用的平台的,比提供社会化分享、统计分析等的友盟,ShareSDK;内测平台FIR.im,蒲公英;云测平台Testin;广告平台Google的AdMob

5、书籍 网站推荐

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

不过后期要精通我觉得几乎应该把所有iOS好的书看完,我在知乎曾问过有什么iOS进阶的书,这个回答非常中肯,有什么iOS进阶的书推荐吗?

Code4App,iOS开发社区 – 开源中国社区,CocoaChina是国内常用的三大代码库网站,国外有,技术问答StackOverflow,代码库CocoaControls,版本控制的网站GitHub,并且欢迎关注我的GitHub,https://github.com/coderyi

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

马上着手开发 iOS 应用程序 (apple官方整理),
Aufree/trip-to-iOS · GitHub(资料最全) ,
iOS资源 – Code4App.com ,
iOS开发60分钟入门 ,
iOS开发从新手到上架,
iOS开发路线简述,

6、iOS学习路线图

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

来自:coderyi

原文链接:http://www.coderyi.com/archives/397

时间: 2024-11-05 16:02:51

iOS开发路线简述的相关文章

iOS 学习路线

1.工作时,需要什么学习什么,学习一个新东西时,多看官门文档,iOS Developer Library. 2.开始每天的工作总结,开始看objc中国,一周一大节. 3.回来时按照iOS开发路线学习,练习完c plus 函数,数组,指针事例. 4.周六做总结,对一周不合理的地方作出适当调整. 5.回到住的地方实行比例时学习,20%时间看书作总结(读书总结)看小狗钱钱,40%学习C语言,10%英语(10个单词),10%财经(可汗学院教程),10%锻炼,10%休息(按照蕃茄时间).

IOS开发入门教程-总结篇-写给狂热的编程爱好者们

程序发轻狂,代码阑珊,苹果开发安卓狂!——写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一步记录一个最简单的 iOS应用从创建到运行的全过程,其中会穿插很多相关知识或是遇到过的问题.其实算不上教程,但希望能够帮助更多的开发爱好者更快.更好的入门. iOS开发环境简述 最友好,最现实,也是最方便的开发环境就是在Mac系统中安装Xcode进行开发.原因在于:第一,开发工具(Xcode)限制.

喜提offer,对于iOS开发看法和进阶学习路线总结!

大家好,这是正在努力进阶iOS的某程序员博客!目前目标30K,希望可以和大家一起进步和成功! 本文所有观点,仅代表个人哦~还是希望大家能耐心看完!查漏补缺是作为一个程序员应该具备的素质,这也是分享本篇文章的初衷! 什么是iOS开发? iOS开发的标准语言是objective-c.是c的一种超集, 它是对c的扩展,支持面向对象编程.像后来的一些高级语言java,c#等都借鉴了该语言的面向对象特性. 当然在iOS开发过程中,也支持c/c++语言与原生的objective-c混编. 容易上手,难以进阶

iOS开发——iOS学习路线

iOS学习路线 一:自学初步学习路线 二:完整学习路线

iOS之一个iOS开发人员完整的学习路线

iOS开发能力 掌握(最好是精通)OC语言和runtime各种细节(读过相关的clang源码和runtime源码为佳).精通基本的framework(Foundation,UIKit等,平时干活用得最多的).掌握一些第三方的轮子,这个主要看你的工作经验和习惯,如果自己有搞过不错的轮子最好(这点可以看出你的经验,眼界和解决问题的能力.) 基础知识 学校里的那些经典课程(数据结构,算法,三大浪漫基础,各分支研究领域的基础课程),这些反正都是老生常谈了...不好好打基础只能书到用时方恨少了.即使做不到

iOS开发学习 阶段过程简述

下面就简单介绍一下我iOS开发的感受,也是学习iOS开发的一个体系架构. 1 iOS开发环境 1.1 开发环境 标准的配置是Mac OS X + Xcode. MacOSX的话首选用苹果电脑,macmini最便宜只要4000多就好了然后自己配一个显示器,macbookpro 也可以,不推荐使用macbookair.还有很多人使用黑苹果或者虚拟机甚至在windows上装一些工具都是不可取的. 另外官翻版的也可以去买,很便宜就可以买到好机子,官翻版. Xcode这个开发工具自己继承了iPhoneSD

iOS开发——面试篇&OC基本语法总结(面试)

OC基本语法总结(面试) C和OC对比 OC中主要开发在什么平台上的应用程序? 答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头? 答:OC中新增关键字大部分是以@开头 OC中新增加了那些数据类型? 答: Block类型 指针类型(Class, id类型) 空类型 特殊类型(SEL, nil) 面向对象特性是什么? 答:继承性,封装性,多态性 import和#include有什么区别? 答:import 的功能和 include一样, 是将右边的

iOS开发 定位服务与地图

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要实现地图.导航功能,往往需要先熟悉定位功能,在iO

100个iOS开发/设计面试题汇总

常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS应用开发流程. 是否熟知CocoaPods?它是什么?如何运行的? 请概括一下你对软件授权的理解,及其对软件开发的影响. 请概括一下你在构建iOS应用时的测试过程.iOS应用如何实现对其他语言.日期格式以及货币单位的支持? 请描述一下Instruments及其作用. 关于iOS技术 请解释一下Han