我正面臨一個惱人的問題,我找不到原因。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模擬器菜單發送內存警告和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;
我不能找到爲什麼?
如果我添加上面這一個行斷點,滾動視圖不是殭屍或等於爲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;
我設置在XIB滾動視圖(而不是在代碼)的代表。
分析儀是否顯示任何潛在問題? – 2012-01-12 15:08:10
分析儀沒有什麼0123最大 – Dabrut 2012-01-12 15:14:20
你的問題是在你的對象已經被釋放之後,'-viewDidUnload'被調用*。當你將你的屬性設置爲零時,你的綜合setter方法試圖釋放舊值,這已經是垃圾了,因爲你已經在'-dealloc'中釋放了它。您需要了解爲什麼視圖管理系統仍將消息發送到您的釋放控制器,因爲這實際上是您的問題。 – 2012-01-12 15:32:19