Когда я изучаю NSURLCache документацию, я не могу найти много важных заметок.
Я обнаружил, что многие темы в Интернете жалуются на то, что NSURLConnection , которые используют NSURLCache , имели утечки памяти. Когда я попытался написать какое-то приложение для iOS 4.3, я обнаружил, что MSURLCache ведут себя странно.
В приложение: didFinishLaunchingWithOptions: Я установил экземпляр NSURLCache с объемом памяти 10 МБ, init NSURLRequest с NSURLRequestUseProtocolCachePolicy , но я не могу получить соединение: willCacheResponse: сообщение в моем NSURLConnection делегат. Когда я проверил объем памяти в разных точках моего приложения, это было 0 МБ. Зачем? Может быть, Apple исправит некоторые утечки памяти, установив NSURLCache объем памяти на 0? Я создал пользовательский NSURLCache и переопределил setMemoryCapacity: метод следующим образом:
-(void)setMemoryCapacity:(NSUInteger)memoryCapacity {
if (memoryCapacity > 0) {
[super setMemoryCapacity:memoryCapacity];
}
else {
NSLog(@"zero here");
}
}
Тогда я начал отлаживать. В моем приложении есть текст для ввода, где пользователь вводит URL. Новый setMemoryCapacity: вызывался дважды: в моем приложении-делегате, когда я устанавливал емкость 10 МБ, и (это очень интересно), когда пользователь устанавливал фокус на ввод текста (параметр memoryCapacity было 0, и я получаю строку «ноль здесь» в журнале). После этого я получил соединение: willCacheResponse: сообщения NSURLConnection делегат.
Это было очень странно. Я не могу понять почему. Я не могу найти что-то в руководстве по этому поводу. У тебя есть мысли?