1.4 初步剖析iOS应用程序
在完成上面这个简单的项目以后,让我们来简单剖析一下:一个iOS应用程序主要由三部分组成。第一部分是视图(View),视图是我们在屏幕上看见的与界面有关的东西,以及将要显示在屏幕上的那些东西。例如按钮、标签或图片这些控件都属于视图。
第二个主要部分是视图控制器(View Controller),它主要通过代码来维护应用程序的运行。比如当用户单击按钮以后程序要做什么,或者是当有数据要显示在屏幕上的时候应该做什么等。
最后一个主要部分就是模型(Model),通过模型我们可以从服务器或本地提取数据,然后通过视图控制器呈现给视图。也可以将用户输入的数据通过视图控制器传递给模型,再由模型进行本地或远程的存储。
以最简单的通信录程序为例,我们通过通信录来管理用户的所有联系人信息。当打开通信录以后,首先会通过视图控制器向模型要数据,比如联系人的电话号码、住址、头像等信息。
模型从数据库或本地获取到这些数据以后,会传回给视图控制器,由视图控制器决定如何用最完美的布局来呈现这些数据。
假如用户想删除一个联系人信息,会通过单击删除按钮,也就是视图的控件,告诉视图控制器。然后视图控制器再将这个请求传递给模型,模型会在数据库中将这个联系人的数据信息从本地或远程数据库中删除,并且将删除状态通知给视图控制器。最后,视图控制器再让视图进行相应数据更新。
刚才我介绍的这些就是MVC设计模式,在iOS开发中这是最常用的一种设计模式。为什么我们要在iOS开发中使用MVC设计模式呢?
因为它非常灵活,方便我们进行管理。比如有一个应用程序,它本身使用的是英文数据库。我们希望它可以使用法文数据库,从而可以将应用程序提供给法国客户使用。因此我们只需要在模型中将原有数据库替换为法文的数据库即可。这样就根本不会涉及视图或视图控制器这两部分,很容易将应用生成一个新的版本。
另一个好处是它们之间相互独立,各自都管理着属于自己的代码。这便于我们调试应用程序里的Bug。比如我们在通信录这个应用程序中看到了错误的布局,那肯定是视图方面的问题。如果发现通信录中联系人名字和头像不匹配,那就可以很快判断出是模型方面出了问题,这样大家都各司其职,使整个项目变得高效灵活。