У меня возникла раздражающая проблема, и я не могу понять, почему.iPhone - EXC_BAD_ACCESS при настройке ноль на IBOutlet - Управление памятью
У меня есть UIViewController я представляю в модальных так:
interviewsViewController *interviewsVC = [[interviewsViewController alloc] initWithNibName:nil bundle:nil];
[interviewsVC setManagedObjectContext:_managedObjectContext];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:interviewsVC];
[interviewsVC release];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
Затем, когда я распускать контроллер представления, как это:
- (void)dismissViewController
{
[self dismissModalViewControllerAnimated:YES];
}
dealloc получает под названием:
- (void)dealloc
{
[_managedObjectContext release];
[_interviewsArray release];
[scrollView release];
[pageControl release];
}
Как только диспетчер просмотра уволен, я посылаю предупреждение о памяти через меню iPhone Simulator и метод viewdidunload вызывается:
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.scrollView = nil;
self.pageControl = nil;
}
Но всегда есть EXC_BAD_ACCES ошибка на self.scrollView = ноль ... Более конкретно на этой линии:
@synthesize scrollView;
И я не могу найти Зачем ?
Если добавить точку останова на предыдущей строке, то Scrollview не зомби или равно 0x0 ...
У вас есть идея?
PS: Вот заголовок:
#import <UIKit/UIKit.h>
@interface interviewsViewController : UIViewController <UIScrollViewDelegate>
{
NSManagedObjectContext *_managedObjectContext;
NSMutableArray *_interviewsArray;
NSUInteger _fetchOffset;
CGFloat _lastXValue;
}
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSMutableArray *interviewsArray;
//IBOutlet
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;
@property (nonatomic, retain) IBOutlet UIPageControl *pageControl;
И я поставил делегат Scrollview в XIB (не в коде).
Анализатор обнаруживает какие-либо потенциальные проблемы? –
Ничего с анализатором Max – Dabrut
Ваша проблема в том, что '-viewDidUnload' получает вызов * после * ваш объект уже освобожден. Когда вы устанавливаете свое свойство в nil, ваш синтезированный метод setter пытается выпустить старое значение, которое уже является мусором, потому что вы выпустили его в '-dealloc'. Вам нужно выяснить, почему система управления просмотром по-прежнему отправляет сообщения на ваш освобожденный контроллер, потому что это на самом деле ваша проблема. –