2011-11-17 4 views
0

두 번째로 특정보기를 하위보기로 추가하려고하면 충돌이 발생합니다. 충돌이 여기에 발생합니다obj_msgSend의 EXC_BAD_ACCESS isKindOfClass :

-(void)AddAsScrollableSubContext:(UIView*)view { 
    [pExtendedScrollableSubContextBounds addSubview: view]; //CRASH HERE 
    pSubScroll.userInteractionEnabled = true; 
} 

내가 전화를 두 번째 ...

[mSongContext AddAsScrollableSubContext:pEQRoot]; 

흐름 내가 호출 스택 나쁜 접근 할 때

[mSongContext AddAsScrollableSubContext:pEQRoot]; 
...Load a lot of stuff 
...Press a Button 
...Unload a lot of stuff 
[pEQRoot removeFromSuperview]; 
...Press a Button 
[mSongContext AddAsScrollableSubContext:pEQRoot]; 

의 라인을 따라 뭔가 다음과 같이 표시됩니다. Callstack

두 개체 pExtendedScrollableSubContextBounds 및 pEQRoot)가 유효한 것으로 보입니다. pExtendedScrollableSubContextBounds에 다른 하위 뷰를 추가하면 pEQRoot (하위 뷰, 프레임)의 다른 작업도 제대로 작동합니다. 내가 어딘가에 메모리를 부수고하고 같은

memdump

이 느낌 ...

나는 objsend R0의 객체이었다 읽고 R1은 선택이 그래서 R1의 메모리 주소에보고했다 보았다 isKindOfClass :하지만 나는 확실하지 않습니다. 누구든지 iOS obj_msgsend에 대한 자세한 정보를 알려줄 수 있습니까? 이 메모리 휴지통이 발생할 때 catch 지점을 설정할 수있는 방법이 있습니까?

+2

거의 항상 좀비 객체 문제입니다. NSZombies를 활성화하고 다시 시도하십시오. –

+0

'언로드 할 때'mSongContext를 해제 하시겠습니까? 아니면 첫 번째와 두 번째 호출 사이에? –

+0

잘 못된 mSongContext가 – TurqMage

답변

0

NSZombies를 사용하여 문제를 해결하십시오.

약간 관련이없는 메모에는 새 규칙, NARC (new, allocate, retain, copy)가 있습니다. 메소드 호출이 이들 키워드 중 하나를 포함하면, 우리는 객체의 소유권을 가지며 우리는 그 객체를 해제해야한다.