2011-11-27 91 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