didReceiveMemoryWarning Crash
-Использование ARC
-У меня есть 5 отдельных контроллеров представления, все подклассы класса, который я сделал, назвал "UIViewControllerWithLoadingView", который подклассы UIViewController.
-В обоих подклассах и суперклассе я выделяю и освобождаю свойства следующим образом:
@property (strong, nonatomic) NSURLConnection *urlConnection;
- (void)viewDidUnload
{
[super viewDidUnload];
self.urlConnection=nil;
}
-Теперь когда вызывается didReceiveMemoryWarning, метод viewDidUnload подклассов работает нормально. BBBUUTTT, если я установлю свойства равными nil в суперклассе UIViewControllerWithLoadingView, приложение будет аварийно завершено. Особенно там, где я установил свойства подкласса на ноль. Так что на данный момент я просто не устанавливаю свойства равными nil в суперклассе, что становится проблематичным, потому что живые байты просто накапливаются во время выполнения.
2 ответа
Проблема была в суперклассе, у которого было представление, которое расширило uiview, у которого была ссылка свойства на viewcontroller. Ну, dealloc автоматически вызывается по дуге, поэтому dealloc фактически устанавливает сам viewcontroller в ноль, вызывая сбой. После того как я удалил свойство viewcontroller из пользовательского класса представления, проблема больше не возникала
Практическое правило заключается в том, что методы, которые "очищаются", такие как dealloc или viewDidUnload, должны делать вызов super после того, как они делают все остальное. (И методы, которые "устанавливают" - например, init - сначала вызывают super.) Я не могу сказать, является ли это вашей проблемой, не видя всех ваших реализаций подкласса, но это было бы место для начала.