一、MVC模式
公开课的视频讲得特别好(网易公开课搜iOS7),MVC就是model、view、controller,其中view就是显示在我们面前的UI界面,包含各种控件:按钮、标签、文本、图像等。model里面放的是各类的数据,包含一些你自己定义的变量、系统通知、要显示到UI的数据等。controller处理的是怎么显示UI以及怎么在model里拿数据。这三者之间要怎么通信是最最重要的。
第一点、model和view之间不能通信,要通过controller。
第二点controller和view之间的通信有四种方式:
1、outlet,输出接口,由controller指向view,将控件显示的状态放到controller里去控制。
2、action,由view告诉controller,当UI界面上发生了用户交互行为,则由UI告知controller发生了哪种行为,然后controller执行相应的动作。
3、should/will/did,这三种有一个例子,比如滚动屏幕将要滚动、已经滚动完毕、应该滚动,这三种趋势都要进行处理,不过view没法自己处理(还没弄清为何没法处理,自己的观点是防止UI做了过多不属于显示的事情,MVC就是要把三个部分分开),所以view将这些趋势委托给了controller,让它来处理这些趋势。
4、datasource,数据源委托,也就是在表视图里如果要显示很多数据时,view也没办法存放太多数据,数据一般放在model里,当view要显示的时候,会通知controller去model里面取来显示。
所以你看,view就只负责美,化妆要用哪种粉什么的都不管,controller就有点像经纪人,view有什么需求就满足什么需求,model就是view和controller的资源。想起了一句小段子,为什么明明可以靠脸吃饭,而我却要这么努力工作累死累活,这就是明明和我的差距,哈哈。
7月18号看完《精通iOS开发》(第6版),里面的代码全部码了一遍,算是有一些代码基础了,而且现在的水平我感觉是能在别人的基础上添加自己想要的功能,要自己创作完全属于自己的App,估计还要一段时间来解惑。
自己看书有一个缺点,总想着要看快一点,所以往往浑沦吞枣,有好多知识点没能吃下去,导致最后消化不良,对很多基本的概念都感到陌生而且有时候会产生厌恶的情绪,觉得太难了。
还好现在有网易的公开课看,解决了好多困惑,接下来的博文会根据我视频的进度慢慢更新这些困惑。