IOS中APP开发之路

现在移动APP正式急速上升的趋势,然而占据着主要地位的还是这2大巨无霸:谷歌的Android与苹果的ios系统。那么,作为

程序员了解一下APP的开发流程思路是有所必要的,特别是正流行火热的APP市场。开发IOS的APP学习思路,翻译 了一个很牛B的网

络文章,并且大致的总结了一些IOS开发APP的流程思路,它不仅仅是初学者的导航灯,还是ios开发热衷粉丝的垫脚石。iOS系统以

及iPhone的出来都要感谢ios鼻祖---乔布斯,一个完美主义者,从如此优秀的iOS系统和iPhone就可以看出来。下面就简单介绍一下

我iOS开发的感受,也是学习iOS开发的一个体系架构,下面把翻译的ios开发APP大致的路线思路描述一下:

一、iOS开发环境

1、开发环境

标准的配置是MacOSX+Xcode。

MacOSX的话首选用苹果电脑,macmini最便宜只要4000多就好了然后自己配一个显示器,macbookpro 也可以,不推荐使用macbookair。还有很多人使用黑苹果或者虚拟机甚至在windows上装一些工具都是不可取的。另外官翻版的也可以去买,很便宜就可以买到好机子,官翻版。

Xcode这个开发工具自己继承了iPhoneSDK,所以不用单独下载SDK。调试的模拟器可以从Xcode里面下载不同版本的模拟器。

2、账号 证书 上架 等

iOS调试真机是需要证书的,所以这个时候需要从申请一个iDP账号,不过仅仅需要调试的话,某宝上有很多卖20几块的证书。应用上传appstore的话有很多种方法,证书分为企业和个人,个人的可以到appstore,企业是不可以的。

二、Obejct-C开发语言

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

1、动态特性

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

2、内存管理

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

3、 一些语言特性

OC首先是只有单一继承,没有多重继承。

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

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

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

OC中有很多类是以NS开头的,那是cocoa层里面Foundation框架的类库。

三、 iOS开发常用思路及知识点

1、 iOS操作系统简介

iOS的系统架构分为四个层次:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)。每层都包含很多系统框架,例如著名的UIKit框架就是在cocoa touch。

2、常用的设计模式

最基础的是MVC模式,就是把项目分为Model、View和Controller三层进行管理。

常用的还有代理模式,通过协议和block实现。观察者模式的话体现在了KVO和notification上了。target-action模式是OC中 非常常见的对象之间方法调用的方式,一般在和UI打交道的时候处理各种GUI上的事件会利用到这种模式,他通常会有一个target作为消息的接收者。单 例模式,使得单例对象在项目中只会创建一次。工厂模式,是一个类族的概念,很符合敏捷软件开发的开放封闭原则。关于各种设计模式,可以看卡奴达摩的专栏。

3、Interface Builder和Storyboard

一般写iOS的UI有三种方式。xib,Storyboard以及代码创建。

我之前自学用了一会的xib,之后一直用代码创建,代码更容易区做多语言版本,而且

xib启动需要事件比用代码直接写慢,xib文件比代码建立UI文件也大。

具体对比可以看喵神的博客代码手写,xib和StoryBoard间的博弈

4、 常用系统框架和第三方库

UIKit是最常用的框架,主要是用来做UI的。包括视图UIButton、UILabel,控制器UIViewController等,还有一些触摸事件、手势等。

QuartzCore、CoreAnimation框架是一些绘图、动画的类库。

第三方库的话,可以查看github上object -c的仓库排名,Search · GitHub 。

5、数据存储

iOS数据存储主要有四种方式。

NSKeyedArchiver,采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议。归档形式保存数据只能一次性归档保存以及一次性解压,只能针对小量谁,而且数据操作笨拙,即如果想改动数据的某一小部分,需要解压整个数据或者归档整个数据。

NSUserDefaults,用来保存应用程序设置和属性。

第三种,Write写入文件。

第四种,相对前两种更为复杂,但也最好用。SQLite,可以自己封装,也可以使用FMDataBase等第三方封装库,还可以使用系统的CoreData。

6、数据通信

iOS的数据通信有几种方式,应用层的HTTP,以及传输层的封装TCP或者UDP的socket接口,还有就是蓝牙通讯。

HTTP的网络服务一般可以用post、get或者soap等方式请求数据,可以用系统的NSURL也可以用第三方类库(MKNetWorkKit、AFNetWorking),这两种类库都可以做缓存,数据交换的格式一般有JSon和xml。

socket可以通过c语言的socket和CoreFoundation框架的CFNetwork实现,也可以用第三方类库asyncsocket。

蓝牙4.0的话使用的是CoreBluetooth框架。

7、多线程编程

iOS的多线程有NSThread、NSOperation以及GCD。NSThread比其他两个轻量级,但是需要自己管理线程的生命周期,线程同步。 线程同步对数据加锁会有一定的系统开销。operation则不需要关心线程管理,GCD是一个替代NSThread和operation的技术。

8、iPad开发

iPad和iPhone开发是异曲同工,但是不要试图去适配iPad和iPhone,因为他们的UI差别太大。(注:这一点Android移动APP也适用)。

9、其他

iOS的地图是使用MapKit框架,定位用CoreLocation。

iOS有一个云端机制iCloud,iOS还有一个推送机制,可以由服务器推送消息到手机应用程序,iOS还可以做本地化。

iOS有一些内置的传感器可以利用起来编程,比如三轴加速传感器,用来测加速度的,还有陀螺感应器,测角速度,感知移动的。

关于iOS的相机、相册以及音视频都有相应的类库。

四、代码管理 工具与开发工具

第一是多人协作的问题,你可以用svn或者git,git是比较流行的,但是大多数的公司还在用svn;

第二,iOS的数据持久化有很多方案,最高效的就是sqlite,在mac上有很多sqlite的可视化管理工具,我用的是sqlitemanager。

第三,关于查看模拟器或者真机的沙盒内容,模拟器可以使用SimPholders,真机可以用ifunbox。

第四,屏幕取色工具,sip。

第五,另外xcode也可以安装很多辅助工具,例如,格式化xcode代码的ClangFormat,第三方库管理工具CocoaPods,压力测试工具uiautomonkey。

第六,移动开发有一些常用的平台的,比提供社会化分享、统计分析等的友盟,sharesdk;内测平台fir.im,蒲公英;云测平台testin;广告平台google的admob

五、ios开发书籍、 网站推荐

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

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

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

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

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

iOS资源 – Code4App.com ,

iOS开发60分钟入门 ,

iOS开发从新手到上架,

六、iOS学习路线图----重点思路

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

总结,其实移动APP开发都不是很难,只要开发思路上稍微跟着移动设备走,符合移动设备的优势,避免与移动设备的不知之

处。前面有很多的PC开发朋友问我,移动APP开发与PC端的开发有什么同?根据我本人开始也是从事PC端的开发,后面转的移动开

发,说实话其实转过来并不难,只要有APP开发的语言基础,还有一个很关键的地方,在设计与编程的时候,要时时刻刻想到这是在

移动设备上“跑”的程序,有很多的地方跟PC端处理是不一样的表现。只要思路上改变了,大致的问题也就没有了,我相信这篇IOS

移动APP开发,能够帮助很多的刚入门IOS开发的初学者。

时间: 2024-12-25 20:31:45

IOS中APP开发之路的相关文章

使用ionic3开始自己的App开发之路

由于这次换工作的原因,我的技术路线也有了一些变化.我原本比较喜欢react,前端js框架方面一直偏向于react.我第一次来到这家公司面试的时候听到他们要开发一款APP,要是用跨平台的技术方案.于是我当时提议的是react native.不过讲实话呢我也不是很有信心做好react native.虽然自己又一些java的基础,还有比较熟悉react,但是react native就看着文档只造过小小的轮子,相比真正的投入生产还比较远. 但是呢我自己相信,这些东西扯来扯去我非就是造轮子,现阶段我又没必

物联网的全栈开发之路

本文由嵌入式企鹅圈原创团队成员-华南师范大学物联网创新中心黄鑫执笔. 两年前我还一直专注在android系统定制领域的研究,对物联网关注比较少,尽管我个人对智能家居的概念和场景体验也比较熟悉.真正引起我注意的是有一次在车上,听到电视广播说打开蓝牙,用手机摇一摇就可以摇到红包,我就觉得这个场景很棒,然后就知道了ibeacon和微信摇一摇周边,知道了微信硬件平台和物联网的发展已经深入渗透到我们的生活了.尽管我觉得自己进入物联网不算早,但是考虑到传统电子行业都有升级到物联的需求,加上自身在嵌入式和AP

Google glass Mirror app开发之HTML布局之标签篇

$_[.=.]  原谅我不太会写标题.. 谷歌眼镜开发 之 Mirror api开发之 HTML布局之 css样式 之xxx... 好了,进入正题,在https://developers.google.com/glass/tools-downloads/playground中可以实时地预览效果 CSS样式文件:https://mirror-api-playground.appspot.com/assets/css/base_style.css Mirror API - Timeline:http

高效Web前端开发之路:YUI 3.15 PDF扫描版

JavaScript是一种最初由Netscape的LiveScript发展而来的面向对象的Web脚本语言,被ECMA国际定义为国际化标准--ECMAScript.JavaScript具有使用局限性.在Web方面,其必须与各种DOM技术结合才能发挥作用.因此,一些具有开拓创新精神的开发者们便开发出了各种丰富的第三方框架,通过第三方的支持代码实现浏览器兼容性的统一.代码的简化以及功能的增强. <高效Web前端开发之路:YUI 3.15>作者便是在此背景下,以国外最优秀的JavaScript框架之一

直播APP开发之iOS开发中的列表优化思路

APP开发中,列表可能是平时我们打交道最多的UI控件之一,其重要性不言而喻,对其性能的优化同样至关重要.而对于iOS开发,列表就是我们常说的UITableView / UICollectionView.在进行直播APP开发时针对于列表的优化自然是必不可少的.这里以UITableView为例简略介绍一下列表优化思路.(1) cell复用.这是每一个iOS开发者都非常熟悉的一部分内容.我们经常在cellForRowAtIndexPath:中为每一个cell绑定数据,实际上在调用cellForRowA

Hybrid App开发之Ajax在JQuery中的应用

前言: 今天学习一下如何通过Ajax与服务器进行交互,并且学习一下如何在JQuery中使用. 首先先了解一下什么是ajax? AJAX即"Asynchronous,Javascript+XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX=异步JavaScript和XML(标准通用标记语言的子集).AJAX是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情

开学第一课-记录Ios开发之路

学习一门新的语言,我们的第一步按照国际惯例常常都是:编写一个程序输出:hello,world . 在学习C语言的时候,用下面这个程序来实现打印出"hello,world": #include <stdio.h> int main(){ printf("hello,world\n"); return 0; } 第一个C语言程序包含:标准库信息.main函数以及调用库函数printf函数打印输出:hello,world 同样的,在学习Objective-C时

iOS中app启动闪退的原因

这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面以后发生的). 而且秒退是发生在程序刚刚启动的时候,在开发.苹果审核阶段都没有被发现的最大可能性就是,这个问题只会发生在老版系统.老版机型上. 对于很多开发者(尤其是个人开发者),进行所有 iOS 版本,所有 iOS 机型覆盖测试是有难度的,苹果审核时也只是重点审核该应用在新机器.新版本下的运行情况

iOS中app在iTunes中更新版本流程

昨天终于把新版本的app上传了,我能说我在上传的前一分钟都在改bug吗 对这个版本的app我实在是没有什么信心去期盼它可以通过苹果残酷的审核 第一次去做更新版本这件事我也看了很多资料,大多数是网络博客 每次看到那些步骤详细,图文混排的博客,心中一直都存感激之情 程序员的世界总是略显孤独,有时会羡慕运营部的喧闹,但是,看到这么多博客,我想这也是我们的交流方式 我去,想文艺一下发现自己词穷 在已经在iTunes发布app的情况下,进行新版本的发布 首先,需要两个文件:production ver,p