2011-10-05 5 views
0

objective-c 객체를 포인터로 사용하여 stl 컨테이너에 저장해야하는 Mac OS X App이 있습니다. 가비지 수집을 사용하여 프로그램을 컴파일 할 때까지는 "사용"해야하는 사용자 정의 프레임 워크로 인해 모든 것이 잘 작동합니다.가비지 수집 환경에서 stl 컨테이너에 객체를 저장하는 중

문제는 stl 컨테이너에 저장되는 모든 개체가 해제됩니다. 컴파일러에게 그것들을 모아서는 안된다고 말하는 방법이 있나요?

이것이 가능합니까? 가비지 콜렉션을 사용하는 프레임 워크를 가질 수있는 방법이 있습니까? 그것도 내 문제를 해결할 것입니다. 프레임 워크를 다시 컴파일 할 수 있지만 GC에 크게 의존합니다.

+0

"stl 컨테이너에 objective-c 개체를 저장해야합니다."이유는 무엇입니까? – NSResponder

답변

1

NSGarbageCollectordisableCollectorForPointer: 방법을 사용하여 개별 개체에 대해 가비지 수집을 사용하지 않도록 설정할 수 있습니다. 그런 다음 -enableCollectorForPointer:에 전화 할 때까지 기다립니다.

나는 (완전히 확실하지는 않지만) CFRetain/CFReleaseNSObject 서브 클라스에 사용해도 거의 같은 효과가 있다고 생각합니다.