Xcode6公布后,出现了很是多的变更,功能性的变更,在这里不进行过多的赘述,在WWDC上苹果已经进行了讲述,网上也有很是多文章,这里要介绍的是一些不太easy发现的,但很是重要的小地方。 一、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吧,这也是苹果比較霸道的一点,固然了也是在保护用户隐私的状况下作出的。 二、应用沙盒地址的变动 获得了模拟器路径后,仍是用很是多的不一样的,应用的沙盒地址也和以前有所不一样。 在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目录所在的目录的文件名称是不一样的。仅仅能本身找。 三、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后,在这方面有什么不一样呢?如下就说说在在真机中调试的不一样。 一、Organizer中,在Xcode5中,是Devices、Projects、Archives三栏,而在Xcode6中,单独将Devices拿了出来,成了和Organizer平级的,在Xcode菜单条,Window下。假设了解过Xcode从4.X升级到5时,就会知道,Organizer在那个时候也变动过,从原来的四栏变成了三栏,将帮助文档移除了。 二、在进行真机调试时,会打开真机中应用程序的沙盒,进行查看,在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,就能够。