1. 程式人生 > >iOS 5的檔案儲存策略應對

iOS 5的檔案儲存策略應對

蘋果在iOS 5系統時,對app的檔案儲存提出了新的要求。從它的guildline來看,是推薦開發者儘量把app生成的檔案放在Caches目錄下的。原文如下:

Only user-generated data or that cannot otherwise be recreated by your application, should be stored in the /Documents directory and rest should be stored to /Library/Caches directory。

照做會怎麼樣?

如果這麼做的話,會出現兩種情況

  1. 如果對此置之不理,繼續把應用生成的檔案放在Documents目錄下,那麼這些檔案會被備份到iTunes或者iCloud。如果這些檔案很大,那麼使用者可能需要為了同步消耗不少流量,然後蘋果可能會因此拒絕你的應用上架,這是一個悲劇。
  2. 如果開發者照Apple說的幹,把應用生成的檔案放在Caches目錄下,那麼蘋果不會拒絕你的應用,很happy。但是iOS 5會在磁碟空間緊張的時候刪除Caches目錄下的檔案,這對使用者來說可能是一個更大的悲劇。

如何應對新的檔案儲存策略?

開發者在這時陷入了兩難的境地,但是到了iOS 5.0.1的時候,開發者多了第三種選擇:

  • 繼續把檔案儲存在Documents目錄下,但是標記這些檔案為不需要備份。詳情請參考 technote (QA1719)

原文如下:

Q: My app has a number of files that need to be stored on the device permanently for my app to function properly offline. However, those files do not contain user data and don’t need to be backed up. How should I store those files in iOS 5?

A: Starting in iOS 5.0.1 a new “do not back up” file attribute has been introduced allowing developers to clearly specify which files should be backed up, which files are local caches only and subject to purge, and which files should not be backed up but should also not be purged. In addition, setting this attribute on a folder will prevent the folder and all of its contents from being backed up.

程式碼示例

給檔案加上”do not back up”屬性的程式碼如下,需要注意這個是iOS 5.0.1才有效,低於這個版本就別費勁了。

#include<sys/xattr.h>-(BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{constchar* filePath =[[URL path] fileSystemRepresentation];constchar* attrName ="com.apple.MobileBackup";u_int8_t attrValue =1;int result = setxattr(filePath, attrName,&attrValue,sizeof(attrValue),0,0);return result ==0;}
轉自http://www.ooso.net/archives/617

相關推薦

iOS 5檔案儲存策略應對

蘋果在iOS 5系統時,對app的檔案儲存提出了新的要求。從它的guildline來看,是推薦開發者儘量把app生成的檔案放在Caches目錄下的。原文如下: Only user-generated data or that cannot otherwise be r

[ios2] iOS 5檔案儲存策略應對【轉】

蘋果在iOS 5系統時,對app的檔案儲存提出了新的要求。從它的guildline來看,是推薦開發者儘量把app生成的檔案放在Caches目錄下的。原文如下: Only user-generated data or that cannot otherwise be recr

Android 檔案儲存策略

Android的檔案儲存有兩種型別: 內部儲存 和 外部儲存 。 首先來確定下一些易混淆的概念: 內部儲存 不是記憶體,內部儲存位於系統中很特殊的一個位置。 外部儲存 不一定是 SD 卡, 機身儲存也是外部儲存。比如 16GB 版本的安卓手機,機子本身就帶

IOS App檔案儲存目錄

      IOS系統為每一個App開闢獨立的儲存空間,也就是我們常說的沙盒(sandbox)。App儲存目錄結構可以分為如下4個:(1)xxx.app (2)Documents (3)Library

Elasticsearch常見的5個錯誤及應對策略

網羅Elasticsearch最佳實踐,實際應用場景中常見錯誤要預知和避免,以最大化提升叢集效能。 1、採用動態模板 如果不定義Mapping,Elasticsearch會根據輸入的資料,建立對應的Mapping,這看起來非常完美,但是Elasticsearch的動態Mappin

在 Laravel 5.5+ 應用中配置使用阿里雲提供的簡訊服務及檔案儲存服務(OSS)

  配置簡訊服務 基於Laravel框架的使用方法 安裝 composer require mrgoon/aliyun-sms dev-master 在config/app.php中新增如下程式碼 'providers' => [

ios 檔案儲存

一,沙盒 iOS 中的沙盒機制(SandBox)是一種安全體系。 每個 iOS 應用程式都有一個單獨的檔案系統(儲存空間),而且只能在對應的檔案系統中進行操作,此區域被稱為沙盒。所有的非程式碼檔案都要儲存在此,例如屬性檔案 plist、文字檔案、影象、圖示

unity中的檔案儲存路徑與各平臺(Android,iOS)的關係

主要是這個問題困擾我了一陣子,所以特寫寫。。。 unity中的的各種儲存方法的對應關係(直接上截圖吧) 重點說的是Application.presistentDataPath方法,因為這個問題在Android中困擾我很久, 先說說iOS端,很簡單,就是儲存到iOS的沙

iOS 數據儲存--歸檔

sea 。。 property append direct mobile mas rect bsp 四種數據持久化方式 http://www.cocoachina.com/ios/20160617/16739.html //先把數據在model中歸解檔 。h @pro

MySQL-5.7密碼策略及用戶資源限制

name ase 5.6 -- ict 0.11 連接數 狀態 cti 1.密碼策略 在mysql 5.6對密碼的強度進行了加強,推出了validate_password 插件。支持密碼的強度要求。 (1)安裝插件 [root@localhost ~]# ll /usr/l

運用python將json檔案儲存成csv檔案

工具:  spyder ,codecs  ,pandas # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ #-*-coding:utf-8-*- import j

Xcode自帶工具symbolicatecrash解析iOS Crash檔案

一、找到.app檔案和.app.dSYM檔案 在桌面建立一個crash資料夾,然後Xcode->Window->Organizer找到Archives找到App->右擊Show in Finder 複製.app和.app.dSYM到crash夾檔案:右擊.xc

Atitit 檔案儲存標準化api 總結 目錄 1. 作業系統,進行操作 1 1.1. FileUtils類的應用 1 1.2. 各大api 比較 2 2. Java。Io用apache的commo

Atitit 檔案儲存標準化api 總結   目錄 1. 作業系統,進行操作 1 1.1. FileUtils類的應用 1 1.2. 各大api 比較 2 2. Java。Io用apache的commons-io包下的FileUtils 2 2.1. 建立 2

TensorFlow模型檔案儲存和讀取

一、模型檔案的儲存 在訓練一個TensorFlow模型之後,我們可以將訓練好的模型儲存成檔案,這樣可以方便下一次對新的資料進行預測的時候直接載入訓練好的模型即可獲得結果,下面通過TensorFlow提供的tf.train.Saver函式,將一個模型儲存成檔案,一般習慣性的將TensorFlow的模

區塊鏈教程Fabric1.0原始碼分析Ledger blkstorage block檔案儲存

  區塊鏈教程Fabric1.0原始碼分析Ledger blkstorage block檔案儲存,2018年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁、迴歸理性,表面上看相關人才需求與身價似乎正在回落。但事實上,正是初期泡沫的漸退,讓人們更多的關注點放在了區塊鏈真正的技術之上。 Fabric 1.0原始碼筆

java中資料的5儲存位置(堆與棧)

任何語言所編寫的程式,其中的各型別的資料都需要一個儲存位置,Java中資料的儲存位置分為以下5種: 1.暫存器 最快的儲存區,位於處理器內部,但是數量極其有限。所以暫存器根據需求進行自動分配,無法直接人為控制。 2.棧記憶體 位於RAM當中,通過堆疊指標可以從處理器獲得直接支援。堆疊指標向下

通訊錄(三)(檔案儲存

動態通訊錄 上篇部落格介紹了動態通訊錄,本篇繼續進一步將動態通訊錄儲存在檔案裡 載入資訊 void LoadContact(pContact pc) { FILE *pf = fopen("contact.dat.txt", "rb"); PeoInfo

centos7.5 檔案操作

zip === zip檔案 zip -r mydata.zip mydata (壓縮資料夾為zip檔案) unzip mydata.zip -d mydatabak(把mydata.zip解壓到mydatabak目錄裡) zip mydata.zip mydata01 mydata02.

HTML5 5儲存方式總結

總體情況 h5之前,儲存主要是用cookies。cookies缺點有在請求頭上帶著資料,大小是4k之內。主Domain汙染。 主要應用:購物車、客戶登入 對於IE瀏覽器有UserData,大小是64k,只有IE瀏覽器支援 目標 解決4k的大小問題 解決請求頭常帶

學習筆記-Python基礎19-結構化檔案儲存-json

# JSON- 線上工具 - w3c、菜鳥教程- JSON(JavaScriptObjectNotation)- 輕量級的資料交換格式,基於ECMAScript- json格式是一個鍵值對形式的資料集 - key:字串 - value:字串、數字、列表、json - json使用大括號