Останавливает ли UIAcivityIndicatorView анимацию самостоятельно, если она удалена / выпущена / освобождена

#iphone #objective-c #cocoa-touch #ios

#iPhone #objective-c #cocoa-touch #iOS

Вопрос:

Я использую UIActivityIndicator в accessoryView ячейки таблицы. На самом деле это подвиде anotherView (который является accessoryView ячейки), как показано ниже:

 UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] 
    initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[anotherView addSubview:activityIndicator];
[activityIndicator startAnimating];
[activityIndicator release];
cell.accessoryView = anotherView;
  

В моем случае использования мне больше не нужно получать доступ к представлению индикатора. Также, если полное представление будет удалено (из-за отклонения ViewController), меня не волнуют эти UIActivityIndicators.

Итак, будет ли этот тип использования безопасным и не создаст никаких остатков памяти / ресурсов? Я проверил, что вызывается dealloc of UIActivityIndicatorView (и это так), поэтому я бы предположил, что анимация также будет остановлена / удалена автоматически, пока иерархия представлений будет уничтожена.

Верно ли мое предположение?

Ответ №1:

Да, как только вы отказались от владения индикатором, иерархия представлений остается единственным владельцем. Если супервизор удален из иерархии представлений и если он не сохранен в другом месте, супервизор освобождает все свои подвиды. Если количество сохраненных вложенных просмотров равно нулю, они освобождаются. Это то, что происходит с вашим представлением индикатора.