日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數據清理

本文介紹的是如何自動清理緩存目錄。

自動清理的緩存目錄

創建一個可以自動維護容量的緩存目錄,通過 APPurgeableType 指定清空的邏輯,通過 size 指定緩存目錄的大小。應用每次啟動會在后臺進程檢查目錄狀態,并按需求刪除文件。如果一個目錄設置了容量上限,當達到上限時,會刪除其中創建時間最早的文件,使目錄恢復到 1/2 容量上限的使用情況。

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, APPurgeableType)
{
    APPurgeableTypeManual = 0,          // 當用戶手動清除緩存時清空
    APPurgeableTypeThreeDays = 3,       // 自動刪除三天前的數據
    APPurgeableTypeOneWeek = 7,         // 自動刪除一周前的數據
    APPurgeableTypeTwoWeeks = 14,       // 自動刪除兩周前的數據
    APPurgeableTypeOneMonth = 30,       // 自動刪除一個月前的數據
};

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

    /**
     *  根據用戶的輸入返回一個可被清理的存儲路徑,同時會自動判斷目錄是否存在,如果不存在會創建。
     *
     *  @param userPath 用戶指定的路徑,比如之前使用 "Documents/SomePath" 來拼接,現在使用 APPurgeableStoragePath(@"Documents/SomePath") 獲得路徑即可。
     *  @param type 指定自動清空的類型,可以是用戶手動或每周,或每三天。
     *  @param size 指定當尺寸達到多大時,清空較老的數據,單位為 MB,0 表示不設置上限。
     *
     *  @return 目標路徑
     */
    NSString* APPurgeablePath(NSString* path);
    NSString* APPurgeablePathType(NSString* path, APPurgeableType type);
    NSString* APPurgeablePathTypeSize(NSString* path, APPurgeableType type, NSUInteger size /* MB */);

    /**
     *  清空并重置所有注冊的目錄
     */
    void ResetAllPurgeablePaths();

#ifdef __cplusplus
}
#endif // __cplusplus

緩存清理接口

統一存儲提供清理緩存的實現類,這個類從 PurgeableCache.plist 中讀取清理任務,這個文件需要放在應用的 Main Bundle 里。清理器會異步執行。回調函數總會在主線程調用,可以在里面進行 UI 展示與處理。

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, APCacheCleanPhase)
{
    APCacheCleanPhasePreCalculating = 0,    // 執行前掃描沙箱大小
    APCacheCleanPhaseCleaning,              // 正在清理
    APCacheCleanPhasePostCalculating,       // 執行完成掃描沙箱大小
    APCacheCleanPhaseDone,                  // 完成
};

@interface APUserCacheCleaner : NSObject

/**
 *  異步執行清理。必須傳一個回調方法。
 *  當 phase 返回 APCacheCleanPhasePreCalculating,APCacheCleanPhaseCleaning,APCacheCleanPhasePostCalculating 時,progress 代表真實的進度。最大為 1.0。
 *  當 phase 為 APCacheCleanPhaseDone 時,progress 返回清理了多少 MB 的數據。
 *
 *  @param callback 回調方法
 */
+ (void)execute:(void(^)(APCacheCleanPhase phase, float progress))callback;

@end

PurgeableCache.plist 中可以定義兩種類型的清理任務。image

  • Path:文件或目錄的路徑,只需要沙箱內的相對路徑即可。

  • Entries:當 Path 為一個目錄時,刪除它下面的哪些子文件或目錄,支持 * 進行通配。

  • Class:指定一個回調方法的定義類。

  • Selectors:調用 Class 類的哪些類方法。

    注意

    必須為類方法,不能為實例方法。