我剛剛學習如何使用UISCrollView並編寫了一些簡單的代碼,將四個客戶MenuItem(UIViewControllers)加載到UIScrollView中。EXC_BAD_ACCESS錯誤,但沒有殭屍觸發
scrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake((scrollView.frame.size.width + menuItemPadding) * menuItemCount, scrollView.frame.size.height);
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.scrollsToTop = NO;
scrollView.delegate = self;
//now create and add the menu items
for (int i =1;i <= menuItemCount;i++)
{
MenuItem *newItem = [[MenuItem alloc] initWithMenuItemDetails:@"Hello"];
[newItem retain];
CGRect frame = scrollView.frame;
frame.origin.x = (frame.size.width + menuItemPadding) * i;
frame.origin.y = 0;
newItem.view.frame = frame;
[scrollView addSubview:newItem.view];
}
行newItem.view.frame = frame正在生成一個EXC_BAD_ACCESS錯誤。我試圖追蹤newItem是否過早釋放,這會觸發該錯誤,但我無法看到它會發生什麼,並且啓用NSZombie的Runnign Insruments不會觸發任何事情。
任何想法爲什麼會發生此錯誤?
非常感謝。
如果您發佈創建'newItem.view'的代碼,可能會有所幫助。也許initWithMenuItemDetails? –
另外''newItem retain';'是不必要的,'alloc'已經返回一個「擁有」對象(這意味着你需要釋放它;保留你需要釋放它兩次)。最後但並非最不重要的一點是,您不存儲或釋放'newItem',從而泄漏它。 – DarkDust
謝謝。我添加了保留作爲測試來檢查對象被保留。我現在會發布其餘的代碼... – AustinRathe