2011-11-27 2 views
1

저는 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는 아무 것도 트리거하지 않습니다.

이 오류가 발생하는 이유는 무엇입니까?

감사합니다.

+2

'newItem.view'를 생성하는 코드를 게시하면 도움이 될 수 있습니다. 아마도 initWithMenuItemDetails일까요? –

+2

또한, [newItem retain];은 불필요하며,'alloc'은 이미 "소유"객체를 반환한다. (해제해야 함을 의미하고, 보유와 함께 두 번 해제해야 함). 마지막으로, 당신은'newItem'을 저장하거나 해제하지 않기 때문에 누출됩니다. – DarkDust

+0

감사합니다. 객체가 유지되고 있는지 확인하기위한 테스트로 retain을 추가했습니다. 이제 나머지 코드를 게시 할 것입니다 ... – AustinRathe

답변

1

에 그 일을하고 있는지 확인, 내 init 메소드는 단순히

return self; 

을 수행하지 않은 것은 따라서 개체를 사용할 수 없습니다. 바보 같은 벌레.

0

는 메인 스레드 내가 여기에 문제를 발견

+0

여기에서 문제가 발견되었습니다. 내 init 메서드는 단순히하지 않았습니다. – AustinRathe

관련 문제