@开发模型:
MVC Model-View-Controller :模型-视图-控制器.(本节主讲) 开始时间 1979.Xero PARC
MVP Model-View-Presenter : 模型-视图-表示器. 开始时间 2004.Martin Fowler
MVVM Model-View-ViewModel : 模型-视图-视图模型 开始时间 2005.John Gossman
等
@viewController
@如何看页面层次
RUN(运行程序)后,点击标题栏
@创建 rootViewController
@取得view
*关于自动load view(网上转)
什么时候执行的 loadView 和 viewDidLoad
一般在初学时,不会用到太复杂的(因为我也是新手),会发现是在这个 ViewController 被设置为 visible 时执行的这两个方法。
永远不要主动调用 loadView 方法
ViewController 会在 view 的属性被请求且当前 view 为 nil 时调用 loadView。
如果你是用 xib 创建 view 并初始化 ViewController,意味着你要使用initWithNibName:bundle: 方法,则不要覆盖 loadView 方法。
如果你是手动创建 view,就要覆盖该方法。
永远不要在覆盖 loadView 方法时使用 [super loadView]
loadView 方法是查看你有木有 xib,有的话就用 xib 加载基本信息,木有的话就会创建一个空白的 UIView,然后把它作为这个 ViewController 的 view。
所以你覆盖这个函数的时候,也按照这个方式是实现就好了。只不过你不是创建一个空白的 UIView,那也没有意义。你创建一个你想要的 UIView,一定要注意这个 UIView 实例必须是给这个 ViewController 独享的(不能被其他实例共享),否则会出问题的。
在 loadView 中实例化 view,在 viewDidLoad 中自定义 view
你只需要在 loadView 时创建 view,不要对它做什么自定义的。
在内存紧张时,程序会调用 viewDidUnload 来释放内存,这个方法是与 viewDidLoad 相对的。当程序内存不那么紧张,且需要用到这个 ViewController 时,则会再次调用 viewDidLoad。
viewDidLoad 和 viewDidUnload 中的操作是相对的。
*关于initWithNibName 制定的nib
细节与其他的不同
1)init只是加载就行,有没有xib无所谓;
但是initWithNibName需要xib文件,如果该文件不存在则报错
2)initWithNibName要加载的xib的类为我们定义的视图控制器类
loadNibNamed要加载的xib的类为NSOjbect。
3)加载方式不同
initWithNibName方法:是延迟加载,这个View上的控件是 nil 的,只有到 需要显示时,才会不是 nil
loadNibNamed方法:即时加载,用该方法加载的xib对象中的各个元素都已经存在。
@多个Viewcontroller
@生命周期
上图不能理解可以看下图
还有下图