#如何简单粗暴学习开发ios#
做了一个Android app才发现,明明是Android的市场份额比较大,但是朋友圈里面却是一大堆iPhone的果粉。好吧,那就再学一个新的开发语言吧。为了不要偷懒,于是记录一下学习过程。
1)以前在大型软件项目里面,经常费心折腾软件工程,设计模式,需求管理,版本迭代,团队协作等等等等,而做一个小项目,很多时候简单粗暴也挺好。
2)第一步当然还是搭建软件开发环境。
以前搭建Android开发环境的时候,因为google的网站全部被屏蔽,所以各种麻烦。现在ios开发环境也并不轻松。首先需要一台MAC电脑,,,,,幸好有聪明的人类发明了虚拟机这种东西,所以作为入门学习,还是先用windows PC好了。VMware 12安装Mac OS X 10.11:http://jingyan.baidu.com/article/bea41d4388a8c4b4c51be6ab.html,然后到app store下载安装XCode开发软件。
3)还需要一本学习手册。
我看了下网上有一些教程。视频教程会比较详细,但是比较费时间,比如老师讲一些你已经知道的东西,你也不知道该快进一分钟还是10分钟。所以还是上京东买了本书《ios9开发指南》。以我崇洋媚外的性格通常是买老外写的书,不过作为入门,这本“编著”的、内容罗列的像手册一样的东西,貌似比较符合我现在的需要。另外下载了几本电子书,比如《iOS开发指南:从零基础到App Store上架(第2版 )》等。
4)Hello World
好像每种开发语言,都以“hello world”作为第一个教学程序。
所以:启动Xcode -》新建Project -》根据手册了解一些选项的含义 -》创建成功。浏览一下自动生成的项目文件,语法怪怪的,有一些像“@ - []”之类的东西,感觉跟java或c++都不太一样。回头再看手册,先不管。
在Xcode的工具栏点击运行按钮,启动iPhone虚拟机,出来一个白花花的界面,什么鬼都没有。
回到Xcode,窗口左边是project navigator,在项目的各种文件里面翻翻捡捡,找到界面设计文件是Main.storyboard,打开后也是一个白花花的界面。继续找一下,Xcode界面右下方有各种控件,常用的Label、Button、Text,用鼠标拖放到设计界面上。拖放的过程中,自动显示各种虚线帮助对齐。选中Label修改其文为“Hello IOS !”。再次运行,一个什么都不做的app就可以了。
回想Android界面设计的时候,需要先指定View的Layout,比如是线性平铺或者网格等等,控件运行时的位置是跟屏幕的实际尺寸相关的。IOS好像是直接把控件拖到哪里就放在哪里,想一想,有可能苹果设备的分辨率只有几种固定的大小,所以万一ios界面是固定尺寸,也是可以理解的。
5)程序入口点
所有程序必然有一个入口点,ios的程序入口点在一个main.m文件,看起来还算正常,不过最后一个参数是“NSStringFromClass([AppDelegate class])”,有点像java反射机制的感觉。
6)ios程序的大体流程和结构
从入口点开始试着顺藤摸瓜,点击main.m中的函数UIApplicationMain,再到Xcdoe窗口右上方选“?”图标,就可以看到关于UIApplicationMain的快捷帮助内容。其中最后一个参数的解释是:The name of the class from which the application delegate is instantiated. bala bala......简单粗暴来说,这个参数就是我们告诉ios系统,我们的程序启动时要实例化哪个对象。
再继续跟踪下去,点击代码中的AppDelegate,右键菜单“Jump to Definition”寻找其定义,跳转到AppDelegate.h。
AppDelegate.h里面有一个@property和一个@interface。@property的类型是UIWindow,估计是指向界面窗口的对象。@interface对象写的是UIResponder,好像跟事件响应相关。
再对照一下AppDelegate.m,里面有个@implementation,列举了几个跟app运行状态相关的事件回调函数,比如active、background状态等等。安卓也有app生命周期的状态迁移和管理,ios的生命周期管理似乎看起来简单一点。其实我觉得,还是不要生命周期管理比较省心。以前可能手机内存太小,现在内存和SD卡都已经很大了,如果系统能管理虚拟内存,开发可以简单很多。
另外的文件,ViewController是视图控制器,Main.storyboard是界面设计,不过还没看出来它们如何跟app的其它部分关联到一起。
7)帮助文档和资料
虽然有书,但最重要的资料仍然是官方的帮助文档,比如快捷帮助,或者从Help菜单里面打开Documentation and API Reference。以及简单问题问度娘,复杂问题问stackoverflow.com