2011-11-27 90 views
1

我剛剛學習如何使用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不會觸發任何事情。

任何想法爲什麼會發生此錯誤?

非常感謝。

+2

如果您發佈創建'newItem.view'的代碼,可能會有所幫助。也許initWithMenuItemDetails? –

+2

另外''newItem retain';'是不必要的,'alloc'已經返回一個「擁有」對象(這意味着你需要釋放它;保留你需要釋放它兩次)。最後但並非最不重要的一點是,您不存儲或釋放'newItem',從而泄漏它。 – DarkDust

+0

謝謝。我添加了保留作爲測試來檢查對象被保留。我現在會發布其餘的代碼... – AustinRathe

回答

1

,我發現這裏的問題上的工作,我的init方法根本就沒有做一個

return self; 

因此對象是不可用。愚蠢的錯誤。

0

確保你正在做的主線程

+0

我在這裏發現問題。我的init方法根本就沒有做。 – AustinRathe