我正在从服务器下载视频和pdf。当我的设备内存很低时再说50MB,那么在下载我的应用程序时会崩溃。如何检查下载的数据是否超过手机中剩余的内存空间?
如果数据超出可用空间,如何停止下载?
有人知道简单的解决方案吗?
答案 0 :(得分:3)
您可以在开始请求之前获得可用的磁盘空间:
NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];
NSNumber *freeFileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
当你获得NSURLResponse
请求时,你应该(希望)有一个内容大小标题,这样你就可以知道需要多少数据。如果数据量太高,您可以cancel
请求(假设您将NSURLConnection
与代理人一起使用)并提醒用户。