学习IOS有一定的时间了。
学习内容
主要的学习材料有以下几个:
1.Stanford大学Paul Hegarty白胡子大叔讲授的 Developing IOS 7 APPS for iPhone and iPad,最近又出了IOS8课程,两者讲述的内容相似。最大的不同就是前者系统为IOS7,使用Objective-C,后者则讲述最新IOS8,使用swift语言。
上课的白胡子大叔很用心,讲解也很细致,让你知其然而知其所有然
每次视频中,前半段针对某一内容讲理论,后半部分就会做个小demo,使用刚讲的理论知识。
2.Apple官方文档。前期看的文档,参考了tinyfool这篇文章<苹果Xcode帮助文档阅读指南>[http://ourcoders.com/thread/show/117/] 下推荐的内容。
3.Ray Wenderlich出品的<IOS Apprentice THIRD EDTION>,主要跟着学习其中1、2、4这三个demo,现在主要关注第四个demo,其实现了从web service中去json数据解析,并在tableview中显示,以及scrollview的使用,讲述内容很细致,真的是手把手教你写IOS App,就像书名那样IOS学徒。
用一句话描述自己的水平的话,“只懂得最最基础IOS开发知识,还需要通过完成一个实际应用来提高”。
知识总结
1.IOS开发使用MVC模式。
- M为model,是应用中的数据与控制程序逻辑的代码,体现应用是什么
- V为view,是用户所能看到的界面以及一部分处理用户交互部分的代码(如响应手势时回调函数,若手势的结果为改变model中的数据,放在controller中比较合适,因为MVC模式一个原则包括View不能直接与model通信)
- C为controller,将model里数据传递给view现实,以及处理view中不能处理交互(比如为了view通用,controller作为tableview的datasource及delegate,以及将controller作为button的target)。
注:
- C中可以有指向model的strong reference、view的weak reference引用
- C中保持v的弱应用,用来显式改变该view的属性(如文字、背景颜色、字体等);view应该显式制定自己的datasource或delegate(在storyboard托出TableViewController时,xcode帮你指定了datasource与delegate,其他情况下可以在viewDidLoad中设定)
关于C中保持view弱应用刚开始挺迷惑的,为什么保持个weak reference,而不是strong呢?后来参照下图
c中有两个outlet view且都是weak reference,但是可以注意的是每个controller都有一个strong的view引用,这个是此controller view hierarchy最高层次,是此controller任何其他view的superview,只要controller不被销毁,就能通过view找到weak的引用,而最高层次对其他strong view reference是UIKit帮忙我们完成,可以不用担心。
- C中有model的strong reference。关于这一点主要是两个方面:①不要在C中对model中数据处理,面向对象的很重要一点就是,每个对象负责自己的工作,如不要将model数据保存的代码放在C的代码中②model当自己数据改变时,原则上都应该通知C,C好更新View,以让界面显示与数据模型间的同步,这里有两种方法:KVO与Notification。这两者都算iOS开发中消息传递常用的方式,在后面总结时会进行详细阐述。