跟我学iOS开发

 

一、iOS开发的前景

二、iOS开发的难易度

iOS开发的前景如何、iOS开发的难易度。要想分析iOS开发的前景,首先你要搞清楚是哪个牛X公司在维护着iOS系统、是谁在背后支撑着全球的iOS开发者,那就是大名鼎鼎的Apple。

一、iOS开发的前景

2012年3月份,苹果公司的市值已经突破5000亿美元,成为世界上市值最大的公司。5000亿是神马概念呢?

  • 可以帮助陷入欧债危机的8个国家偿还债务
  • 可以买下35个天安门广场、34座卢浮宫、109座圆明园
  • 可以同时买下雅虎、戴尔、百思买、摩托罗拉、动视暴雪
  • 超过105个国家一年的GDP
  • 平铺在地上,能覆盖42%的美国领土
  • 每个苹果员工可以分到660万美元
  • ......

这个5000亿,真可谓“富可敌国”。在此,我们还要感谢苹果公司给雅安捐款5000万。其实,苹果对我们中国消费者一直都重视。为什么苹果公司这么有钱呢?我在这里简单分析一下。

1.苹果公司的商业模式

1> AppStore

苹果公司有个叫AppStore的应用商店,既然叫商店,肯定是卖东西的,它卖的是软件。开发者可以将开发好的软件,标个价钱,发布到AppStore。用户可以免费注册一个AppleId账号,然后利用AppleId登录AppSotoe,下载一些喜欢的软件,安装到自己的iPhone\iPad等苹果移动设备上!AppStore里面包含了77.5万款应用,应用的下载次数已经超过400亿次,有些是免费的,也有些是要钱的。比如一个植物大战僵尸HD版,下载一次需要45¥,HD版一般是指iPad版。而iPhone版的植物大战僵尸,下载一次需要18¥。每个AppleId第一次下载的时候才需要花钱,以后重新下载是不用花钱的。

很多人可能觉得可笑,在我们天朝还怕没有免费软件用么,有谁会笨到去花钱买软件啊?但是,就是有这么多的用户愿意花钱向苹果买软件。要想知道为什么,这个要追溯到2001年了。

2> 安装软件到iPhone上

没有用过iPhone的人可能会问:iPhone上的软件一定要从AppStore下载么?可不可以像android手机一样从别的网站下载软件后再安装到手机上呢?

  • 默认情况下,iPhone上的所有软件都必须从AppStore下载安装;不过,可以对你的iPhone进行破解,也就是传说中的“越狱”, “越狱”后的iPhone可以安装从其他地方下载的软件,就跟android手机安装软件类似了。不过“越狱”有一定的风险,如果不幸安装了恶意的软件,也许会将你手机中的一些隐私信息泄露出去。如果你是从AppStore下载软件,那就很安全了,因为苹果会对开发者上传的应用进行严格的审核,如果发现有不妥的地方,就不允许发布到AppStore。网上有一键“越狱”工具,支持iPhone\iPad\iPad mini\iPod touch。
  • “越狱”还有个好处,AppStore上本来要钱的软件可以免费安装了。比如一个植物大战僵尸在AppStore上卖45块,一些热心的大神呢,花45块买了软件后,对软件进行破解,重新打包成安装包,挂到网上供网友免费下载。
  • 如果你是开发人员,也可以利用Xcode将你写的程序运行到iPhone上,也相当于安装软件,不过得有开发者证书,后面我会介绍这个证书。

2.“果粉”的诞生

接下来分析一下:为什么有这么多的用户愿意花钱向苹果买软件。

1> 第一代iPod的发布

2001年10月23日,苹果公司发布第一代iPod,iPod是一种MP3播放器。当时很多公司都在嘲笑苹果公司,因为几年前就有MP3这种东西了,而且已经被三星、索尼等公司占据了市场。但是,第一代iPod的推出在当时引起了轰动,它不但漂亮,而且拥有独特和人性化的操作方式以及巨大的容量,为MP3播放器带来了全新的思路,这是一款具有跨时代意义的产品。就这样,iPod为苹果公司吸引了一大批全球各地的消费者,这批消费者彻底被苹果的产品给迷上了,俗称“果粉”。乔布斯并不是PC(电脑)的发明者,但是苹果电脑却使人眼睛发光;他也没有发明MP3,但iPod却风靡世界;他以前没有做过手机,但iPhone将诺基亚摩托罗拉打得落花流水;在乔布斯之前许多人做平板电脑失败了,但iPad却激发了消费者的狂热......所谓创新,就是把别人已经做过的东西再做得更好一点!

2> iPod的使用

iPod的操作方式跟普通MP3播放器是很不一样的。普通MP3播放器,用一条USB数据线连接MP3播放器和电脑,就可以直接将电脑上的歌曲文件复制到MP3播放器中。而iPod呢,你需要用苹果官方提供的iTunes软件才可以将歌曲传送到iPod中。iTunes在每次iPod连接到电脑主机时,可以把特定的播放列表或把整个音乐库自动同步到用户的iPod里。iTunes中还有个iTunes音乐商店,用户可以从商店中购买正版高品质音乐,然后利用iTunes将音乐文件同步到iPod中进行播放。从其它商店购买的受保护音乐是不能在iPod上播放的,iTunes音乐商店已经售出了10亿首歌曲。当然,也有黑客破解了iPod的诸多限制,使得iPod可以播放从任何地方下载的音乐,相当于欺骗iPod,让iPod认为它在播放从iTunes上购买的音乐。

综上所述,从iPod发布开始,苹果公司已经培养了一大批忠实的“果粉”,让“果粉”养成了从苹果商店花钱购买东西的习惯。这个“习惯”就是关键!“果粉”对苹果公司已经有了依赖和信赖,所以,苹果推出了AppStore应用商店,也有一大批“果粉”愿意花钱向苹果买软件。

3.赚了用户的哪些钱

至于用户,苹果主要赚取了2大部分的钱:

1> 硬件

  • 移动设备:iPhone\iPad\iPad mini\iPod,现在一部iPhone5在天朝的价格大概是5k
  • 电脑设备:MacBook(苹果笔记本)\iMac(苹果一体机)\Mac Mini(微型苹果主机),iMac的价格一般都是上万的

2> 软件

用户如果花钱从AppStore下载了一个软件,这个钱就给苹果和开发者三七分。比如,我开发者了一款软件,以10块的价格挂在AppStore上,如果有用户花10块下载了一次,我就得7块,苹果得3块。

4.苹果也赚开发者的钱

1> iOS开发者

只要你有了Xcode,就可以开发iOS程序,顺便可以将程序运行到模拟器进行调试,一切操作都是免费的。但是,如果你想把程序运行到真机(iPhone\iPad等)上调试,那就得有开发者证书;如果你想发布应用到AppStore,那就得有发布证书。要想得到证书,首先你得向苹果申请为iOS开发者(iOS Developer),而且并不一定免费。成为iOS开发者后,就可以从官网下载前面所说的2种证书了。iOS开发者可以分为4种类型:

(1) 个人型(individual)

  • 费用:每年99$。看清楚了,是每年,而且是美元。
  • 作用:证书只能是个人使用。可以发布应用到AppStore。
  • 提示:用户只能在AppStore下载你的软件。(“越狱”除外)

(2) 公司型(company)

  • 费用:每年99$。
  • 作用:证书可以多人使用。可以发布应用到AppStore。
  • 提示:用户只能在AppStore下载你的软件。(“越狱”除外)

(3) 企业型(enterprise)

  • 费用:每年299$。
  • 作用:证书可以多人使用。不可以发布应用到AppStore。
  • 提示:如果你开发的软件是企业内部使用,或者给特殊人群使用,并不想发布到AppStore给全球用户使用,就可以用这种账号。你把开发好的应用放到某个服务器下,然后把下载地址告诉用户,用户在自己的机器上使用Safari浏览器访问下载地址,然后就会自动下载安装。用户就不用从AppStore下载你的应用了。

(4) 大学型(university)

  • 费用:免费。
  • 作用:用于校园内部开发测试,需要学校向苹果公司申请,但审核非常严格。

可以看出,苹果不仅是赚消费者的钱,还赚开发者的钱。而且开发者还要买苹果笔记本呢,这里又赚了一笔。

2> 应用发布的流程

  • 如果你要把应用发布到AppStore,不是马上就可以上线的,还要经过苹果公司的严格审核。审核的内容有很多,比如是否为恶意程序、是否包含黄色暴力的内容、是否有使用的价值(不可能随便写的小例子也能发布成功)、是否有明显的BUG(BUG就是指程序错误)、是否侵权等等。而且,有些特殊软件,苹果是不允许你开发的,比如输入法、短信软件、通讯录等,像这类应用,是不可能在AppStore上找到的。
  • 可以看出,苹果是很为用户着想的。你想象一下,如果苹果不严格审核应用的话,那AppStore将会有多少垃圾软件啊,最终受伤的是用户。
  • 如果你上传的应用审核不通过,苹果会详细列出不通过的原因。而且这个审核过程至少为1个星期,有时候还要半个月或者1个月。因此,你的应用从开发到正式上线,要耗很长时间。如果软件要发布新版本了,一样的,还是进行审核才能上线。
  • 如果你开发的应用不想给苹果审核,那么你就选择企业型开发者,虽然贵了200$,但还是有好处的:不用再等待那至少1个星期的审核了,可以随时发布新版本,用户也可以及时享受最新版本。

5.总结

  • 说了这么多,应该能感受到为什么苹果这么有钱了吧。当然,苹果肯定还有其他赚钱的途径。有这么牛X的公司在撑着,这几年内,iOS开发的前景还是不错的。再加上iOS开发的门槛比较高(昂贵的设备成本),对比andorid,iOS开发者少了很多平民开发者。而开发android程序是完全免费的,即使你是农民工,只要你会写代码,就可以开发android程序。相对来说,iOS人才还是比较少的。
  • 近几年,移动互联的发展非常迅速,各大公司也不断推出自己的移动终端产品,都想在移动互联领域占有一席之地,前阵子听说腾讯以6000万的价格收购了一款由6个人开发的手机刷机软件,一人分了1000万。目前来说,移动开发是个不错的方向。
  • 大部分iOS用户的消费能力都比较强,特别是在游戏方面,一大堆RMB玩家,砸几万RMB只为玩一个手机网游。前几天看到一款《我叫MT》的iOS网游向雅安捐款了100多W,公司承认大部分钱是来自RMB玩家的支持。

二、iOS开发的难易度

以我个人和身边朋友的开发经历来说,对比android开发,iOS开发会更简单一点。做一个相同的功能,在android上可能需要9-10行代码实现,在iOS上可能只需要1-2行,而且实现地更加出色。这并不是夸张的说法,这是事实,但并不是所有的功能都这样。我并不是说android开发不好哈,只是有些功能开发起来相对复杂一点。为什么会有这样的差异呢?

1.强大的开发工具

苹果公司提供了非常强大的开发利器---Xcode,集成了iOS模拟器、Interface Builder等工具。Interface Builder是用来构建软件界面的,利用Interface Builder,你可以轻松地拖拽一个按钮或者文字到软件界面上。

2.强大的SDK

苹果公司提供了非常强大的SDK,也就是开发包。用了这个开发包,有些功能,你只用几行代码就能实现非常出色的效果。

3.android开发与iOS开发对比

1> iOS是不开源的

苹果公司的iOS系统是不开源的。不开源意味着什么呢?意味着其他公司的移动设备不允许搭载iOS系统,即使你出再多的钱,苹果公司也不愿意给你用。所以你会看到只有苹果公司自己的产品上才运行着iOS系统,比如iPhone、iPad等。你不可能说看到某辆车的车载系统是iOS的,那肯定是山寨车、山寨系统,除非苹果公司自己卖车了,出了一款iCar,哈哈。

2> android是开源的

而google开发的android系统呢,它是开源的。那意味着android系统是免费的,谁都可以使用,所以你今天看到满街都是android手机,有三星、索尼、华为、小米等,就连康师傅和读者杂志都出android手机了,有网友还调侃“康师傅,够了,别逼三星出方便面”。甚至连电视、洗衣机、微波炉、汽车等,都是android系统的。对比iOS设备,android设备的价格都比较便宜。

3> 开源背后的android开发者

可以看出,android的市场占有率是很大的,但是苦了android开发者,为什么呢?市面上的android手机屏幕有大有小,为了考虑程序能够适应所有的手机屏幕(也就是“屏幕适配”),android开发者可是吃尽了苦头啊,这对开发者来说,简直是个噩梦。再者,由于android是开源的,意味着每个手机厂商都可以对原生的android系统进行修改,包装成自己特有的系统,小米、魅族就是如此。这对android开发者来说,又是一个噩梦。举个例子:本来好好的一个功能,在三星手机上能运行成功,但是在小米手机上就可能运行不起来或者达不到想要的效果,这种事情是经常发生的。为了让这个功能适应所有的手机,android开发者又是吃尽了苦头。公司一般会为android开发者配备N台不同型号的手机,感觉公司对自己挺好的,这么多手机任你用,其实,你懂的。。。

4> iOS设备的屏幕适配

运行iOS系统的设备就那几个:iPhone\iPad\iPad mini等,屏幕大小也比较统一,比如iPhone4和iPhone4S的屏幕是一样的,不管是iPad2还是iPad4,所有的iPad屏幕也是一样的,不会像android那样很大变化。不过iPhone5的屏幕比以前的iPhone多大了一些,不过我觉得这个问题不大,因为利用苹果的开发工具和开发包,可以轻松地解决这个屏幕适配的问题。苹果官方也表示iPhone6的屏幕并不会变得更大。

5> 加班问题

在公司里面,经常会出现这样的情况:同一个项目,iOS开发组早早做完了,android开发组还在苦逼中,而且领导经常在那催“iOS组都做完了,你们怎么还没做完啊”,加班也是常见的事。当然,iOS开发组也有加班的时候。前不久,听到一个朋友在调侃,他说感觉他们公司做iOS开发的都比android开发的帅气精神一点。他还说,一个星期不见,那个做iOS的皮肤好像又好了一点。哈哈哈,挺搞笑的。

4.iOS和android系统架构对比

现在市面上的android手机,屏幕越来越大、CPU越来越高级,听说有8核的了、内存也越来越大。但是有时候使用起来,还是不如iPhone流畅。就拿iPhone4来说,内存才512M,CPU单核;我现在有部android系统的索尼LT26ii,双核CPU,1G内存。对比之下,还是iPhone4顺畅一点。有时候,LT26ii上有个程序崩溃了,会导致整个手机都停滞一段时间;在iPhone上,有个程序崩溃了,并不影响其他程序的使用。Facebook的开发者也在吐槽android系统太粗糙了。为什么会有这样的差异呢?这跟系统架构有关系。

1> android系统架构

android是基于Linux内核设计的,是在Linux内核上面运行一个Java虚拟机,虚拟机再运行软件。像是在一个系统上面又套了一个系统,相当于同时跑2个系统,我们的应用要穿越2层系统才能跟手机硬件交互。所以占内存大、运行速度略低。

2> iOS系统架构

iOS是基于UNIX的,直接与底层硬件通信。系统底层、应用框架、应用软件都是采用C\C++或者Objective-C写的,所以有很高的运行效率。

5.总结

我并不是说android开发没有前景,只是觉得android开发相对辛苦一点。如果你android技术很牛B、经验丰富,遇到再难的andorid问题,也是可以迎刃而解的。还有一点,iOS开发中也是有难点的,肯定也有苦逼的时候,也有加班的时候。

时间: 2024-09-28 19:25:21

跟我学iOS开发的相关文章

从零开始学ios开发(八):Autorotation and Autosizing

不好意思,这一篇间隔的时间有点长,最近实在是事情太多,耽搁了,好了,长话短说,下面继续学习ios. 这次学习的内容是Autorotation和Autosizing,Autorotation就是屏幕内容自动旋转,因为iphone有重力感应系统(陀螺仪???),屏幕的内容会随着用户手握iphone的方式(竖着握Portrait.横着握Landscape)而改变,这个相信大家都已经有所体会,Autosizing是指当iphone的屏幕旋转后,屏幕里面控件的大小和位置也会自动改变.好了,下面跟着例子继续

从零开始学ios开发(六):IOS控件(3),Segmented Control、Switch

这次的学习还是基于上一个项目继续进行(你也可以新建一个项目)学习Segmented Control和Switch. Segmented Control Switch Segmented Control和Switch的主要区别在于Segmented Control可以有多个值进行选择,而Switch只有2个值. 1)添加Segmented Control从object library中拖一个Segmented Control到iphone界面上然后调整Segmented Control位置以及它的

从零开始学ios开发(十五):Navigation Controllers and Table Views(中)

这篇内容我们继续上一篇的例子接着做下去,为其再添加3个table view的例子,有了之前的基础,学习下面的例子会变得很简单,很多东西都是举一反三,稍稍有些不同的内容,好了,闲话少说,开始这次的学习. 如果没有上一篇的代码,可以从这里下载Nav_1 1)第三个subtableview:Controls on Table Rows这个例子,我们将为每个table view的每一行添加一个按钮,这个按钮将放在accessory icon的位置(之前我们使用过accessoryType,其实这也是一个

从零开始学ios开发(十四):Navigation Controllers and Table Views(上)

这一篇我们将学习一个新的控件Navigation Controller,很多时候Navigation Controller是和Table View紧密结合在一起的,因此在学习Navigation Controller的同时,我们还将继续学习Table View其他一些特性,毕竟Navigation Controller还是相对来说毕竟简单的,没有什么太大的花头,它的主要作用就是一个view的切换,切来切去,而Table View的花头就比较多了,这次我们将这2个控件结合在一起进行学习. 再多说一

从零开始学ios开发(十二):Table Views(中)UITableViewCell定制

我们继续学习Table View的内容,这次主要是针对UITableViewCell,在前一篇的例子中我们已经使用过UITableViewCell,一个默认的UITableViewCell包含imageView.textLabel.detailTextLabel等属性,但是很多时候这些默认的属性并不能满足需要,其实更多的时候我们想自己制定UITableViewCell的内容,这篇学习的就是制定自己的UITableViewCell. UITableViewCell继承自UIView,因此它可以加载

学iOS开发(一)——实现一款App之Foundation框架的使用

当你着手为你的应用编写代码的时候,你会发现有许多可供使用的Objective-C的框架类,其中尤其重要的就是基础框架类,它为平台所有的应用提供基础服务.基础框架类中包括了表示字符串和数字等基本数据类型的值类(value classes),也有用来存储其他对象的集合类(collection classes).你将会依赖值类和集合类为你的ToDoList app编写大量代码. 值对象(Value Objects) Foundation框架提供了生成字符串.二进制数据.日期和时间.数字以及其他值对象的

从零开始学ios开发(七):Delegate,Action Sheet, Alert

Action Sheet和Alert是2种特殊的控件(暂且称之为控件吧,其实不是控件真正的控件,而是ios中的2个类,这2个类定义了2种不同类型的用于和用户交互的弹出框),Action Sheet是从底部弹出,上面有2个或者2个以上的选项供用户选择,Alert就是一个警告框,上面有1个或者1个以上的按钮供用户进行选择. 在继续这一篇的内容之前,稍微花点时间说一下ios中用到的Delegate Pattern(委托\代理模式). ios中有很多已经定义好的类可以供我们在编写程序时直接使用,例如UI

学iOS开发(二)——实现一款App之编写自定义类

今天学iOS开发(二)--实现一款App之编写自定义类 当开发iOS应用程序时,你会发现在许多场景下,你需要编写自己的自定义类.当你需要数据和自定义行为一起打包时,自定义类就很有用了.在一个自定义的类中,你可以为存储.操纵和显示数据定义你自己的行为. 例如,考虑iOS Clock app中的全球时钟标签(World Clock tab).这个表视图中的单元格需要显示比标准表视图单元格更多的内容.这是一个不错的机会实现一个扩展UITableViewCell行为的子类,从而在给定的表视图单元格中显示

从零开始学ios开发(五):IOS控件(2),Slider

下面继续学习ios的其他控件,这次会使用到的控件有Slider,当然还有一些之前已经使用过的控件Label. 这次我们不新建一个project了,当然如果你愿意重新创建一个新的项目也完全可以,我们还是使用上一篇的项目Control Fun. 上一篇中,我们最后的成果如下图所示我们添加了一个ImageView,2个Label和2个TextField,现在我们继续在此基础上添加其他的控件. 1)添加Slider和LabelSlider类似于一个滑块,左右(或者上下)滑动来改变数值,在object l

从零开始学ios开发(一):准备起航

首先介绍一下自己的背景,本人09年研究生毕业,大学就不介绍了,反正是上海的一所211大学,学的是计算机科学与技术专业,学生时代,从事过ACM,没有什么太大的成就,中国的牛人是在太多,我的水平,估计连高中生都pk不过.毕业后到现在,一共待过4个公司,Wicresoft,Chinasoft,Beyondsoft,一直到现在的位于人民广场的一个公司,公司名就暂不介绍了,如果哪天不在这个公司做了,再把公司名字说出来吧. 在Wicresoft,主要从事Asp.net开发,使用C#,这个也是一种使用到现在的