autorelease pool에서 "익사 (drowning)"라고 불리는 문제가 생겼습니다.Autorelease Drowning
내 코드는 객체를 올바르게 생성하고 소멸시킵니다. 그러나, 나는 그것에 대해 알지 못하고 여러 변수를 autorelease하는 몇 가지 클래스 메소드를 사용한다. 그들은 매분마다 수천 회와 수천 회를 반복한다고 생각합니다 ... 나는 프로그램에서 잃어버린 수천 개의 미발표 물체에 익사하고 있습니다.
2 질문 : 그러니 내가 AT ALL 클래스 메소드를 사용하지 않는
은 - 영구적 인 해결책이, 또는 심지어, 몇 가지 인스턴스 메소드 (재단, UIKit는) 여전히없이 객체를 autorelease를하는 것이 내 그것에 대해 알고 있습니까?
또는 클래스 메소드를 호출하기 전에 자동 릴리즈 풀을 할당하고 클래스 메소드를 호출 한 후이를 배수 할 수 있습니다. 이것이 영구적 인 해결책입니까?
@Dave DeLong 좋았어. 문제는 NSUserDefaults를 항상 사용하는 것입니다 ... 그리고이 클래스의 메서드는 자동 변환 된 객체를 만듭니다. 이제 나는 왜 애플이 그것을 추천하지 않는지 이해한다. 또한 언급 한 것과 같이 NSString 메서드를 항상 사용합니다. 그리고 반복하면서, 나는이 이상한 문제들을 얻는다. NSUserDefaults를 쉽게 대체 할 수있는 제안은 무엇입니까? 감사. – GSchv
@GSchv 왜 NSUserDefaults를 대체해야한다고 생각하십니까? autoreleased 객체를 반환하고 현재 autorelease 풀의 수명을 넘은 객체에 매달려 있다면, 객체를 '보유'하고 (작업을 완료 한 후에 객체를 release하십시오). –
'[pool drain]'은 http://developer.apple.com/mac/library/documentation/cocoa/reference/foundation/Classes/NSAutoreleasePool_Class/Reference/Reference에서 선호하는 방법입니다.html # // apple_ref/occ/instm/NSAutoreleasePool/release – cobbal