iOS清除缓存,模拟器有效,但在真iPhone时无效

Posted

技术标签:

【中文标题】iOS清除缓存,模拟器有效,但在真iPhone时无效【英文标题】:iOS clear caches ,simulator is effective,but when in real iPhone is not 【发布时间】:2016-10-17 03:58:09 【问题描述】:

ios清除缓存,我使用NSFileManager删除无用文件,但是当我在模拟器中这样做时,它可以清除所有无用文件,当我用真正的iPhone(iPhone 5s)这样做时,它是无效的,谁能帮忙我来解决这个问题?非常感谢!

代码:

#define docPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]

#define cachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]

- (void)clearCaches

    [self clearCachesWithFilePath:cachePath];
    NSArray *docFileArr = [self getAllFileNames:docPath];
    for (NSString * fileName in docFileArr)         
        if (![fileName isEqualToString:@"mqtt.cer"]) 
            [self clearCachesWithFilePath:[docPath stringByAppendingString:[NSString stringWithFormat:@"/%@", fileName]]];
        
    


- (NSArray *)getAllFileNames:(NSString *)dirPath
    NSArray *files = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:dirPath error:nil];
    return files;


- (BOOL)clearCachesWithFilePath:(NSString *)path
    NSFileManager *mgr = [NSFileManager defaultManager];
    return [mgr removeItemAtPath:path error:nil];

【问题讨论】:

使用error参数而不是传递nil 【参考方案1】:

您正在尝试删除缓存目录本身,而是获取缓存目录中的内容列表并一一删除。希望这会有所帮助。

【讨论】:

我删除了缓存目录,我得到的目录是文档目录,因为有一个证书文件我不想删除它。所以我使用了一个for循环并一个一个地删除它们。还是谢谢大家。 对不起,不,这很奇怪

以上是关于iOS清除缓存,模拟器有效,但在真iPhone时无效的主要内容,如果未能解决你的问题,请参考以下文章

在真 iPhone 上测试应用程序 [重复]

Android实现清除应用程序缓存

如何在真 iPhone 上运行我的应用程序? (我有我同事的证明)

听声音在 iPhone 模拟器上有效,但在设备上无效

iPhone - UITableView 使用 plist 填充在模拟器中有效,但在 iDevice 上无效

使用 AVAudioPlayer 播放的音频在 iPhone 模拟器中有效,但在设备中无效