我刚刚学习如何使用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