잘 모르겠습니다.이 권한을 묻지 만 어쨌든 시도해 보겠습니다.개체 할당 해제 중 개체의 관찰자 등록 해제
나는이 코드 조금 호출하는 프로그램 ... 결국 사라지고 나는 코드의 현재 비트를 removeObserver 싶습니다 localCalculateTimeFiles
[localCalculateTimeFiles addObserver:self
forKeyPath:@"arraystatuscounter"
options:NSKeyValueObservingOptionNew
context:NULL];
이 (조잡를 넣어). 아무 것도하지 않고 localCalculateTimesFiles가 적절한 removeObserver를 수행하지 않고 사라지는 경우 런타임에서 예외가 발생합니다. 나는 더 많은 경고가 있었지만 지금은 프로그램이 이상하다고 생각합니다.
개체 포인터를 모두 적절한 시간에 적절한 위치에 올바르게 가져옵니다. 내가하고 싶은 건 localCalculateTimeFiles가 할당 해제 될 때 관중을 내려 놓는다. 나는 새와 LOG_FILE를 처리하기위한 논리를 대체 할 것
- (void)finalize {
if (log_file != NULL) {
fclose(log_file);
log_file = NULL;
}
[super finalize];
}
애플의 문서에 따르면, 나는이 일을하기 위해 다음과 같습니다 localCalculateTimeFiles에 메서드를 추가 할 것으로 보인다
... 관찰자 등록을 취소하는 논리 분명히, removeObserver 메소드가 제대로 작동 할 수있는 아이템을 가지고 있는지 확인하기 위해 모든 포인터를 가지고 있는지 확인해야합니다. 내가 제대로 그걸 줘,이게 합리적 이냐, 아니면 완전히 벗어난거야?
+1 '-finalize'는 a) 가비지 수집기에서만 호출되며, b)이 시점에서 가비지 수집 대신 ARC를 사용해야하므로 b) 사용되지 않습니다. – Caleb
좋아, 그래서 대신 dealloc 메서드를 다시 실행해야한다. 이번 주에 시험해보고 작동시킨 후에 투표 버튼을 눌러 보겠습니다. –