문제

NSDate 객체가 조기에 처리되는 데 많은 문제가 있습니다. 문제가 NSDate 편의 방법에서 반환 된 객체를 다루는 방식과 관련이있을 수 있다고 생각합니다. 나 생각한다 JKSHOW 클래스의 쇼 데이트 재산 선언은 "유지"해야하지만, 할당 또는 사본으로 변경하는 것은 문제에 영향을 미치지 않는 것 같습니다.

JKShow *show; 
NSDate *date;
NSMutableArray *list = [[NSMutableArray alloc] init];

// Show 1
show = [[JKShow alloc] init];
//...
date = [gregorian dateFromComponents:dateComponents];
show.showDate = date;
[list addObject:[show autorelease]];

// Show 2
show = [[JKShow alloc] init];
//...
date = [gregorian dateFromComponents:dateComponents];
show.showDate = date;
[list addObject:[show autorelease]];

업데이트

문제는 여기에 복사 된 코드에 없었습니다. 내 JKShow init 방법 내가 반환 된 날짜를 유지하지 않았다. NSDate 편의 방법. 여러분의 도움에 감사드립니다.

도움이 되었습니까?

해결책 4

모든 도움을 주셔서 감사합니다. 그러나 문제는 여기에 게시 한 코드를 벗어났습니다. 나는 유지하지 않았다 NSDate 나는 Init Method에서 만들었습니다. 불행히도 내가 두 사람을 만든 후까지 충돌이 발생하지 않았습니다. NSDate 물체, 그래서 나는 잘못된 나무를 완전히 짖고 있었다.

다른 팁

DatefromComponents에서 반환 된 날짜는 AutoreLease Pool에 있어야하므로 ShowDate 속성이 "유지"되어야합니다. 실제로 어쨌든 (구체적으로 "사본"을 원하지 않는 한).

당신이 보여준 코드에서 당신은 당신이 당신의 쇼 객체의 소유권을 목록에 전적으로 제공하고있는 것처럼 보입니다 (추가 할 때 자동 제출을 설정할 때). 쇼 개체가 목록에서 나오기 전에 날짜 개체가 처리되고 있다고 말하고 있습니까 (또는 목록이 처리 중)?

또한 합성 된 특성을 사용하고 있습니까, 아니면 손으로 쓰고 있습니까? 후자의 경우, 세트 쇼와 같은 속성 방법은 어떻습니까?

다른 장소에서 날짜 객체의 고정 장치를 기록 할 수도 있습니다 (항상 AutorELEASE가 실제로이를 복잡하게한다는 것을 알게되지만).

showdate가 게시 한 코드가 주어지면 충분한 보유 속성 인 경우. 다른 것 (아마도 Jkshow의 구현에서)은 올바르지 않을 수 있습니다.

무슨 일이 일어나고 있는지 알아 내려면 악기를 사용하여 수명을 검사 할 수 있습니다. 보유 및 릴리스를 기억하기 위해 할당 도구 세트로 실행해야합니다. 기본적으로 누출 성능 도구를 실행하면 해당 방식으로 설정됩니다.

이와 같은 악기를 실행하면 모든 객체 수명 범위와 그에 대한 옹호 및 릴리스에 대한 역 추적을 기록합니다. 물체를 살펴보면 날짜 중 하나를 찾아서 모든 보유 및 릴리스를 살펴보십시오.

보여준 코드에는 조기 방출 문제가 없습니다. 실제로 배열을 해제하지 않기 때문에 배열과 그 안에있는 모든 것이 누출됩니다.

쓰레기 수집가를 켜고 달리고 있습니까?

~이다 list 인스턴스 변수 또는 정적 변수입니까, 아니면 로컬 변수입니까?

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