2013-10-29 28 views
0

我試圖用最大的光盤容量配置NSURLCache。我在iOS 7上。根據文檔,NSURLCache的discCapacity屬性是一個NSUInteger,又名unsigned int,它應該接受最大值4,294,967,295(0xFFFFFFFF)。但是,使用大於0x7FFFFFFF(2147483647)的任何值都會導致實際將自身報告爲0的值,並且光盤緩存完全不工作。無法配置2GB以上的NSURLCache光盤容量

此外,使用0x7FFFFFFF(2GB),一旦光盤緩存填滿接近2GB的任何位置,實際上就會導致malloc錯誤。

我發現這個工作的唯一方法是最大值爲1GB(1073741824)。使用此值時,所有按預期工作。

我想爲我的應用程序使用盡可能多的磁盤容量的NSURLCache。我如何使用8甚至16GB?

更新[添加代碼示例在意見中的要求]:

NSURLCache* sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:sizeInBytes 
                 diskCapacity:sizeInBytes 
                  diskPath:@"somepath"]; 

[NSURLCache setSharedURLCache:sharedCache]; 

,或者你也可以這樣做:

[[NSURLCache sharedURLCache] setDiskCapacity:sizeInBytes]; 
[[NSURLCache sharedURLCache] setMemoryCapacity:sizeInBytes]; 
+0

您是否可以分享一些代碼以查看如何爲NSURLCache分配光盤容量和內存? –

回答

0

按照iTunes Connect Developer Guide有一個硬盤2 GB限制對應用程序的大小。這包括應用程序包,文檔文件夾和tmp文件夾,庫文件夾(緩存存儲在磁盤上)等。

+0

我不認爲這一陳述適用於我遇到的問題。準則涉及應用程序分發包,即您在.ipa中發佈的所有內容。與NSURLCache相同,在運行時大小不同的緩存不是應用程序飲食包的一部分。只是我的2c。 – pixbroker