저는 UISCrollView를 사용하는 방법을 배우고 있으며 4 개의 고객 MenuItem (UIViewController)을 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];
}
line newItem.view.frame = frame이 (가) EXC_BAD_ACCESS 오류를 생성하고 있습니다. newItem이 너무 일찍 출시되면 추적을 시도했는데, 그 오류를 일으킬 것입니다. 그러나 NSUombie가 활성화 된 runnign Insruments는 아무 것도 트리거하지 않습니다.
이 오류가 발생하는 이유는 무엇입니까?
감사합니다.
'newItem.view'를 생성하는 코드를 게시하면 도움이 될 수 있습니다. 아마도 initWithMenuItemDetails일까요? –
또한, [newItem retain];은 불필요하며,'alloc'은 이미 "소유"객체를 반환한다. (해제해야 함을 의미하고, 보유와 함께 두 번 해제해야 함). 마지막으로, 당신은'newItem'을 저장하거나 해제하지 않기 때문에 누출됩니다. – DarkDust
감사합니다. 객체가 유지되고 있는지 확인하기위한 테스트로 retain을 추가했습니다. 이제 나머지 코드를 게시 할 것입니다 ... – AustinRathe