문제

편집 : 초기화 직후 배열을 수동으로 유지하기 위해 단일 호출을 멈췄다. 듀. 감사.

나는 Uiscrollview 서브 클래스에 nsmutablearray를 보관하고, 각각이 서브 뷰로 추가되므로 Uiimageview 서브 클래스의 인스턴스에 추가합니다. 결국 배열에서 순서를 재 배열 할 계획이므로 변한 배열이어야합니다. 이 버그는 내가 그렇게하려고하기 전에 발생합니다. NSLOG를 사용하여 ApplicationDidBecomeactive : Application DidBecomeactive까지 배열이 10 점을 계산한다는 것을 보여 주었고 런 루프에서 0.001을 발사하기 위해 타이머를 추가했습니다. 처음 발사되면 더 이상 배열을 찾을 수 없습니다! 나는 매우 혼란스럽고 몇 시간 동안 이것을 추적하려고 노력하고 있습니다.

타이머가 제대로 작동합니다 (즉, PrintCount : 배열에 액세스하지 않으면 괜찮습니다). 분해되는 배열에 액세스하려고 할 때만 가능합니다. PrintCount에 정기적으로 전화를 걸어 : 아래에서 작동하지만 타이머가 처음으로 발사 될 때이 두 호출 사이에서 PrintCount에 일어날 수있는 일이 발생할 수 있습니다.?

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSTimer *timer = [[NSTimer scheduledTimerWithTimeInterval:0.001f
                                                       target:[viewController view]
                                                     selector:@selector(printCount)
                                                     userInfo:nil
                                                      repeats:YES]
                      retain];
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
    [[viewController view] printCount];
}

나는 디버거와 함께 프로그램을 끝없이 밟고 있습니다. 배열은이 지점을 통해 바로 올바른 것이며 내용이 변경된 후에도 메모리 주소가 동일합니다. 그러나 나중에 객체 만 있습니다. 10 개의 요소가 단일 UitouchData 인스턴스로 대체됩니다. 그것이 어디에서 왔는지 모릅니다. 내 이벤트 처리 방법 중 어느 것도 배열을 재 할당하거나 변경하려고 시도하지 않습니다. 무엇이 잘못 될 수 있는지 아이디어가 있습니까? 나는 완전히 신비롭다.

도움이 되었습니까?

해결책

당신은 -retain 배열?

다른 팁

아마도 당신의 객체가 출시 되었습니까? 당신이 그것을 유지하면 어떻게됩니까? 그게 작동합니까, 아니면 메모리 누출을 얻습니까?

10 개의 요소가 단일 UitouchData 인스턴스로 대체됩니다. 그것이 어디에서 왔는지 모릅니다.

항상 uitouchdata 인스턴스입니까? 언제나? -메모리 문제와 죽은 주식 (매일 동일하지 않은 경우)처럼 보일 것입니다.

나는 초기화 직후 배열을 유지하기 위해 전화를 걸어 고정시켰다. 듀.

제안 해주셔서 감사합니다. 일반적으로 이와 같은 문제에서 발생하는 것처럼, 그것은 매우 간단했고 마침내 도움을주고 도움을 요청하면 해결책을 유발하고 어리석은 느낌을줍니다. :디

보기가 배열을 초기화하고 해제합니까?
NSView가 그 사이에 출시되지 않았다고 확신합니까?
메모리 주소가 있는지 확인할 수 있습니다 [viewController view] (== 자기 내부 printCount) 타이머가 호출 될 때마다 동일합니다 printCount.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top