Встроенный браузер увеличивает потребление памяти в iOS

#ios #objective-c #memory-management #memory-leaks

#iOS #objective-c #управление памятью #утечки памяти

Вопрос:

В моем приложении пользователь может перейти по ссылке. Для этого я использую встроенный браузер. Но когда пользователь посещает сайт, потребление памяти увеличивается с 25 МБ до 50 МБ и не уменьшается, даже если пользователь закрывает браузер или возвращается к предыдущему экрану.

Вот простой код, который я использую для открытия браузера:

     AppMainBrowserViewController *mainBrowser = [[AppMainBrowserViewController alloc] initWithNibName:@"AppMainBrowserViewController" bundle:nil];
    mainBrowser.urlString = urlString;
    [self.navigationController pushViewController:mainBrowser animated:YES];
  

В моем AppMainBrowserViewController :

 if ([InternetDetector isNetAvailable]) {

    if (self.processingIndicatorAlertView == Nil) {
        [self showIndicatorView];
    }

    //Request
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:self.urlString]];
    [self.mainWebView loadRequest:request];
} else {

    UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:ALERT_TITLE_MSG message:INTERNET_NOT_FOUND_MSG delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [errorAlert show];
}
  

Где я ошибаюсь?

Ответ №1:

Скорее всего, это связано с кешем NSURLCache . Попробуйте, чтобы перед запуском встроенного браузера он просто установил для кэша значение 0:

  int cacheSizeMemory = 0; 
    int cacheSizeDisk = 0; 
    NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"];
    [NSURLCache setSharedURLCache:sharedCache];
  

Комментарии:

1. Потребляется все та же память.