归纳笔记014:沙盒

沙盒

在OS X系统中查看应用程序沙盒,有两种方式:

(1)               打开Finder应用程序,通过“command+shift+G”快捷键打开“前往文件夹”对话框,用户可以在该对话框中输入“/users/<用户名>/library/”,这样即可进入OS X的库名录。然后依次进入该目录下的ApplicationSupport/iPhone Simulator/7.0/Applications子目录。iOS将所有的第三方库保运在Aoolications目录下,每个应用都保存在一个称谓Globally Unique Identifier(GUID)的文件夹中,GUID文件夹就是应用程序沙盒。

(2)               在OS X系统命令行窗输入“defaultwrite com.apple.finder AppleShowAllFiles –bool true”,然后退出Finder,重启Finder程序即可看到隐藏文件额文件夹,这样就可以通过Finder直接进入/users/<用户名>/library/Application Support/iPhone Simulator/7.0/Applications目录,同样可以在该目录下看到所有第三方应用程序的GUID文件夹。


打开任何应用程序的文件夹,都可看到如下文件结构:

(1)                   Doucuments:除了基于NSUserDefaults的首选择项设置之外,应用程序的数据、文件都保存在该目录下。

(2)                   Library:基于NSUserDefaults的首选项参数保存在Library/Preferences目录下。

(3)                   tmp:该目录供应应用程序存储临时文件,当iOS执行同步时,iTunes不会备份tmp目录下的文件。当要应用程序不再需要某个临时文件时,应该负责删除tmp目录下的临时文件,避免占用内存空间。


获取Documents目录

由于我们的应用程序位于GUID文件夹内,这个文件夹的名称看上去完全随机,Foundation提供了NSSearchPathForDirectoriesInDomains()函数,示例代码如下:

NSArry *paths =   NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUser DonmainMask,  YES);

NSString *documentsDirectory  = [paths objectAtIndex:0];


获取tmp目录

获取tmp目录,直接调用NSTemporaryDirectory()函数即可,该函数将会返回一个字符串,该字符串代表了tmp目录的完整路径,示例代码如下:

NSString *tempPath = NSTemoraryDirectory();


使用Settings Bundle

Settings Bundle时应用程序中的一组特殊文件,用于高速iOS自带的Settings应用,该应用程序希望通过Setting应用来手机程序参数。

使用SettingBundle设置应用程序参数的最大优势在于:无须程序员开发界面,应用的设置界面完全由Settings应用提供,开发者只要提供Setting Bundle这组文件即可。

当开发者为应用提供了SettingBundle之后,该应用的参数设置界面由系统的Settings应用提供,用户设置的程序参数也由Settings负责保存,每次打开Settings进行设置时,Settings负责读取用户设置的参数。应用程序的参数设置界面、数据存储、读取逻辑都由Settings应用负责。


属性列表

对于只需要保存简单数据的应用而言,使用属性列表是一个不错的选择,NSArray、NSDictionary对象都提供了writeToFile:(NSString*)filePath atonically:(BOOL)flag方法,该方法可以吧NSArray和NSDictionary包含的数据写入属性文件。

当恢复这些数据时,只要调用NSArray、NSDictionary的xxxWithContentsOfFile:(NSString*)filePath方法执行初始化即可。

需要指出的是,只有当NSArray和NSDictionary包含的数据写入属性文件保存如下类型的对象后,才可调用writeToFile:(NSString*)filePath atomically:(BOOL)flag方法执行保存:

(1)   NSArray和NSMutableDictionary。

(2)   NSDictionary和NSMutableDictionary。

(3)   NSData和NSMutableData。

(4)   NSString和NSMutableString。

(5)   NSValue和NSNumber。

    这意味着如果NSArry、NSDictionary中保存了其他类型的对象,或保存了程序员自定义类的实例,将不能直接调用NSArray、NSDictionary的writeToFile:(NSString*)filePath atomically:(BOOL)flag方法执行保存。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值