一、接下来,我们来说这个新特性页面 1.首先,看一下我们的示例程序,这里改一下,加一个叹号, command + R, 好,首先啊,这里边有一个新特性页面,当我这个程序是第一次安装、第一次运行、还有呢、就是当这个应用程序更新的时候,我应该去加载这个新特性页面, 然后呢,这个新特性页面,实际上,就是一个Controller,就是一个CollectionViewController啊,就是一个Controller, 然后呢,如果你是第一次运行、或者是更新的时候、就应该让Window的根控制器,变成你新特性的这个Controller, 如果呢,你不是第一次,或者不是更新的情况下,那么,直接就显示到你的那个tabbarController上,就可以了, 所以呢,我们这个时候啊,肯定是要在AppDelegate里边,在你设置控制器的时候,我们先把最后一份代码复制一份儿,备份一下, 改名叫09-彩票-新特性-代码位置, 来到我们的AppDelegate里边, Window的RootViewController,是在这一块儿,在一定条件下,应该是tabbarController, 在另外的条件下,应该是显示新特性页面,所以,我们肯定是要在这儿写代码的,这是第一, 2.然后呢,接下来,我们就要来说,怎么着去判断第一次运行、或者是更新的情况,然后,就应该显示到这个新特性的情况, 然后,其他的情况,就应该显示的是tabbar的情况, 首先呢,我们的思路啊,大体是这个样子的,我们说,版本号,是在info.plist里边, 没问题吧,这个1.0,就是版本号, 我们要把这些版本号,保存到沙盒当中去,每一次,在你切换控制器之前,在你一上来要显示,不确定显示哪一个控制器之前,先判断一下,你当前沙盒里边的这个版本号,你沙盒里边存的这个版本号,跟我当前跑的这个程序的info.plist里面的版本号,是不是一致的,如果是不一致的,那也就意味着,要不你就是更新了,要不你就是第一次运行,然后,我就应该去加载一个新特性页面,如果是一致的,就意味着,我之前已经跑过这个程序了,然后呢,把它去显示tabbar界面,就可以了, 总之,我要把版本号保存一下,然后呢,加载这个控制器之前,去进行判断,这是我要做的事情,首先呢,我们在Delegate里边,先写几个方法, 我要把它拆开了,先写几个方法,这几个方法啊: 1)把版本号保存到沙盒 2)读取沙盒里面的版本号 3)读取info.plist里面的版本号 我先把这些方法都写好了,然后,再去代码里边去拼, 2.好,首先呢,我要写一下啊,我来先写一个,把当前的版本号保存到沙盒, // 把当前的版本号保存到沙盒 - (void)saveAppVersion{ } 我只要调用这个方法,就能把当前info.plist版本号,保存到沙盒当中去, 那么,首先,我要去获取到当前的版本号, // 获取当前程序的版本号 当前程序的版本号,也就意味着,我要去获取info.plist里面的这个1.0, 这个字符串,这个东西怎么着去获取, 首先,我怎么着去获取info.plist,这个文件, info.plist,虽然它是一个plist,但是它的根节点,是不能够改变的, info.plist,都是字典, 然后,我们怎么着去获取这个字典,系统给我们提供了方法, // 获取info 字典 [NSBundle mainBundle].infoDictionary;