Xcode6公布后,出现了非常多的变动,功能性的变动,在这里不进行过多的赘述,在WWDC上苹果已经进行了讲述,网上也有非常多文章,这里要介绍的是一些不太easy发现的,但非常重要的小地方。

         1、Xcode6模拟器路径的变更

          在Xcode5和之前的版本号中,Xcode的模拟器路径为:/Users/username/Library/Application Support/iPhone  Simulator。在该目录下,能够查看到全部的模拟器版本号,点进去后,可查看应用沙盒情况。

在开发中,建议将文件拖动快捷路径到Finder左側个人收藏下,能够方便打开查看应用沙盒。

        在Xcode6中,将模拟器的位置进行了变更,地址例如以下:/Users/username/Library/Developer/CoreSimulator,打开后会发现例如以下情况:

        在这里,苹果对模拟器进行了编码处理,并非以模拟器系统版本号进行的命名和分类,而是对Xcode6中全部的模拟器进行的区分,里面的16个目录分别相应的Xcode6中的16种模拟器 ,那怎样依据这个看似乱码的目录,推断出是哪一款模拟器呢? 

       选中某个文件后,打开会看到一个名为data的目录,和device.plist的配置文件,打开device.plist的配置文件后,会看到模拟器的UDID、设备类型、系统版本号、名称等。通过这个能够知道模拟器的设备和系统版本号。打开后,会发现,前面的看似乱码的文件名,事实上就是模拟器的设备UDID,尽管从这里能够得到模拟器的UDID,苹果也用它来进行分类模拟器,但在实际的编程中,假设想最后公布到APP Store的话,还是放弃UDID吧,这也是苹果比較霸道的一点,当然了也是在保护用户隐私的情况下做出的。 

         2、应用沙盒地址的变更

        得到了模拟器路径后,还是用非常多的不同的,应用的沙盒地址也和之前有所不同。

       在Xcode5及之前的版本号中,沙盒地址为例如以下:/Users/username/Library/Application Support/iP hone  Simulator/7.0.3/Applications,在Applications文加下,会找到应用程序的沙盒。

       在打开应用沙盒后,会有应用程序文件、Document目录、Library目录、tmp目录。至于这几个目录的作用不在此做赘述。

       在Xcode6中,应用程序文件、Document目录、Library目录、tmp目录这四个文件放在了不同的目录中。应用程序文件路径:/Users/username/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Containers/Bundle/,Application目录下;Document目录、Library目录、tmp目录路径:/Users/username/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Containers/Data/,Application文件下。可是不幸的是,这两个路径打开后的文件名称,还是经过编码过的,并且,同一个应用中的应用程序文件和D、L、t目录所在的目录的文件名称是不同的。仅仅能自己找。 

       3、NSUserDefault 文件存储位置变更

       NSUserDefault是iOS提供的本地化数据存储方式,会在沙盒中自己主动创建一个.plist的配置文件,将数据保存起来,在读取时,以NSDictionary字典来进行接收 

       在Xcode5及之前的版本号中,详细的路径为:/Users/shifengwei/Library/Application Support/iPhone Simulator/7.0.3/Applications/C9588981-3D82-49BC-92B8-F5BA72185629/Library,Preferences目录下,名称为程序Bundle Identifier的plist文件。在删除模拟器中的程序后,在Library目录下的plist文件会对应的删除。

       在Xcode6中,程序对使用NSUserDefault方式创建的plist文件的位置进行了更换,详细路径为:/Users/username/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Library,Preferences目录下。

       这里特别说一下,假设依照在Finder里打开的路劲来看,并非这种,但通过 Finder,前往目录,通过该路径查找是能够查到的。上述的路径地址是通过查看Preferences目录的显示简单介绍获得的。

        通过上述的路径能够看出,通过NSUserDefault创建的plist目录还是在Library文件下,但不同的是,真正存放的位置变了,成了在模拟器的资料库目录下,这种改变所产生的变化就是,当我们在删除模拟器中的应用程序后,plist文件还是会保留,并不会删除。

       那么,既然模拟器中的位置变了,那升级到iOS8后,在这方面有什么不同呢?以下就说说在在真机中调试的不同。

        1、Organizer中,在Xcode5中,是Devices、Projects、Archives三栏,而在Xcode6中,单独将Devices拿了出来,成了和Organizer平级的,在Xcode菜单条,Window下。假设了解过Xcode从4.X升级到5时,就会知道,Organizer在那个时候也变更过,从原来的四栏变成了三栏,将帮助文档移除了。

       2、在进行真机调试时,会打开真机中应用程序的沙盒,进行查看,在Xcode中,  打开Devices的Application中,能够下载下来应用程序的沙盒,通过右击显示包内容来查看沙盒的信息。可是在iOS8和iOS7及之前出现了不同。

       上图为同一款应用在不同的系统中所表现的,左图为iOS8下,下载下来的沙盒内容,右图为iOS7.0.4下,下载下来的沙盒内容,非常显然,在iOS8下,通过Devices下载的沙盒内容无法查看沙盒里面的内容。 

                我们通过第三方的软件,在这里使用的是iFunBox,找到应用程序后,打开发现能够查看到沙盒的内容,拷贝到本地后,发现,原本的5个文件,仅仅有3个,也就是Document目录、Library目录、tmp目录三个。

     这里特别说一下,上述提到过的,在模拟器中,通过NSUserDefault自己主动创建的plist文件,在删除软件后,还会保留,但在真机中,也是会删除的,对应的plist文件的路径到了通过导出的Library目录下的Preferences目录下,删除应用程序后,不会保留。这应该算是一个真机和模拟器中的不同。

       这个不同会造成一种情况,那是否还能够使用NSUserDefault?就笔者眼下来看,还不至于废弃NSUserDefault,毕竟它仅仅是在模拟器中会出现删除应用保留的情况,在真机中不会,并且NSUserDefault在开发中,作为数据持久化,在保存数据时,还是非常好用的。当然了,也有开发人员会不适应这样的情况,操心在真机中会出现,假设有开发人员觉得不适应的话,能够自己创建一个plist文件在沙盒中,取代,可是假设说应用中使用的NSUserDefault比較多的话,不建议这样,毕竟苹果封装的NSUserDefault还是非常好用的。能够在模拟器删除文件后,在保存plist文件的目录下,将plist文件删除就可以,多个步骤而已,至少眼下来看,在真机中还是和之前一样的。

       当然,在iOS中,除了NSUserDefault会系统自己主动生成文件进行数据保存外,归档也是一样的,因为笔者没有进行測试,为了避免误导,这里就不说了,待測试后,进行总结公布。



PS:最后补充一下,打开或关闭Mac的隐藏文件的命令。

打开Mac隐藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool true

关闭Mac隐藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool false

方法:在终端中,输入该命令,回车,然后在强制退出中,重新启动Finder,就可以。

最新文章

  1. 一个前端所需具备的PS能力
  2. 解除sql server数据库占用
  3. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
  4. 13 HashTable抽象哈希表类——Live555源码阅读(一)基本组件类
  5. border单样式写法的问题
  6. F5 负载均衡
  7. 从ramdisk根文件系统启动Linux成功,及使用initramfs启动linux
  8. codeforces 676D Theseus and labyrinth BFS搜索
  9. oracle中存储过程的使用
  10. Polya定理
  11. java中获取类加载路径和项目根路径的5种方法
  12. Firebug入门指南(转)
  13. Windows平台分布式架构实践负载均衡
  14. Struts-ValueStack和OGNL总结
  15. STM32L476RG_中断开发与实列
  16. matlab飞机飞行
  17. 如何跳过前端JavaScript的验证
  18. 性能优化中CPU、内存、磁盘IO、网络性能的依赖(转)
  19. 扩展欧几里得(E - The Balance POJ - 2142 )
  20. Android Studio 视图解析

热门文章

  1. JavaScript tab页
  2. Http协议的断点续传下载器,使用观察者模式监视下载进度,使用xml保存下载进度。
  3. android设置Activity背景色为透明的3种方
  4. bootstrap课程8 bootstrap导航条在不同设备上的显示效果如何
  5. 11. ZooKeeper之启动、停止服务。
  6. Thinkphp5创建控制器
  7. 【例题 7-3 UVA - 10976】Fractions Again?!
  8. java线程——详解Callable、Future和FutureTask
  9. 洛谷 P3131 [USACO16JAN]子共七Subsequences Summing to Sevens
  10. python3 购物车小程序,余额写入文件保存