具体学习资料来源于官方的开发者学资料
https://developer.apple.com/cn/documentation/
2.iOS App框架学习
- ViewController的生命周期及其回调
- ViewController互相之间传递信息
- Gesture Recognizer 生成事件
-
ViewController生命周期的理解
从四个状态 其中状态之间需要一个动作(did 或 will)支持,其中Appearing 和Disappearing可以直接互相跳,设计思路是因为可以中断?
但是不管怎么样,在状态变更之前,都需要生成具体的VIewController ,也就是所谓的viewDidLoad()
-
viewDidLoad()
—在创建视图控制器的内容视图(其视图层次结构的顶部)并从情节提要中加载时调用。保证在调用此方法时,视图控制器的出口具有有效值。使用此方法可以执行视图控制器所需的任何其他设置。通常,iOS
viewDidLoad()
在首次创建其内容视图时仅调用一次;但是,在第一次实例化控制器时不一定创建内容视图。相反,它是在系统或任何代码第一次访问控制器view
属性时被惰性创建的。 -
viewWillAppear()
—在将视图控制器的内容视图添加到应用程序的视图层次结构之前调用。使用此方法可以触发在屏幕上显示内容视图之前需要进行的所有操作。尽管有名称,只是因为系统调用了此方法,所以不能保证内容视图将变为可见。该视图可能被其他视图遮挡或隐藏。此方法仅指示内容视图将被添加到应用程序的视图层次结构中。 -
viewDidAppear()
—在将视图控制器的内容视图添加到应用程序的视图层次结构之后立即调用。使用此方法可触发在屏幕上显示视图后立即进行的所有操作,例如获取数据或显示动画。尽管有名称,只是因为系统调用了此方法,所以不能保证内容视图可见。该视图可能被其他视图遮挡或隐藏。此方法仅指示内容视图已添加到应用程序的视图层次结构中。 -
viewWillDisappear()
—在将视图控制器的内容视图从应用程序的视图层次结构中删除之前调用。使用此方法可以执行清除任务,例如提交更改或退出第一响应者状态。尽管有名称,但系统不会仅因为内容视图将被隐藏或遮盖而调用此方法。仅当要从应用程序的视图层次结构中删除内容视图时,才调用此方法。 -
viewDidDisappear()
—在从应用程序的视图层次结构中删除视图控制器的内容视图之后立即调用。使用此方法执行其他拆卸活动。尽管有名称,但系统不会仅因为内容视图已隐藏或模糊而调用此方法。仅当内容视图已从应用程序的视图层次结构中删除时,才调用此方法。
-
基于场景的生命周期(可选)
小窗模式的解决方案?
- Gesture Recognizer 的使用主要是将动作和视图绑定,使其响应事件
3.项目结构以及UIKit
主要的App结构方式,UIKIt已经有对应的策略----MVC的结构设计
-
App 构建的配置信息----Info.plist
声明App的硬件和软件需求,也就是解决常用的适配问题
使用特定的系统框架,就是硬件上提供的服务:类似GPS,相机
类似安卓的manifest,
-
App的环境 ,UIKit使用”特征集合“用于描述环境信息,例如用户偏好设置,界面设置,设备设置等
... 还有很多可以从资料中获取,这就不贴出来了
4.iOSView的思考
layer是对图层的抽象
view 是对图层的行为的抽象
window是view中对显示的行为的抽象
viewcontroller是对view的行为的抽象,包括响应事件的反应等
其中最重要的思路还是复用,降低耦合性
注意:这里所有的抽象行为是iOS定义的,如果想要是自定义行为,基本上最后不要脱离苹果的框架,否则需要对每个生命周期都需要定义对应的行为才能符合最后的效果
5.iOS中使用广泛的就是委托的思路
在对象的行为中嵌套委托的行为,从而使得扩展性更强,但是从后端的角度来说,这个就是java的依赖注入的简易实现