2010-05-08 8 views

답변

4

나는이 시점에서 주로 메모리에 대해 우려하고 있습니다.

첫 번째 문제는 메모리가 저장되는 방식을 실제로 이해하지 못한다는 것입니다. 이 배열은 객체 자체가 아니라 객체에 대한 포인터를 보유하므로 NSManagedObjects와 ObjectID를 보유하는 것은 포인터의 크기와 동일합니다.

CoreData는 개발되었으며 관리 객체 컨텍스트 내에서 자동 메모리 처리 및 오류에 대한 많은 내부 최적화 기능을 제공합니다.

감안할 때이 옵션을 사용하면 배열에서 NSManagedObjects를 사용하는 것이 좋습니다. 다른 방법을 사용하면 아무런 이점도 없으므로 NSManagedObjects를 사용하면 코드를 적게 작성하여 검색 할 수 있습니다.

+0

필자가 한 독서와 테스트에서 객체에 적어도 하나의 포인터가있는 한 객체는 메모리를 보유하고있는 것처럼 보입니다. 객체 ID를 저장하면 객체는 자동으로 릴리즈되고 필요에 따라 컨텍스트에서이를 해제 할 수 있습니다. 내가 누락 된 항목이 있습니까? – respectTheCode

+1

예, 핵심 데이터가 메모리를 확보하는 데 필요한 NSManagedObject의 "내용"을 삭제한다는 사실을 놓치고 있습니다. 예를 들어, 10,000 개의 NSManagedObject 인스턴스 목록이 있다면, 모두 메모리에있는 것은 아닙니다. 지금 당장 * 사용중인 사람 만됩니다. 마지막으로,이 수준에서의 메모리 최적화는 나중에 앱 개발 사이클에서 * 많이 * 나중에 수행되어야합니다. 일반적으로 사전 최적화를 시도하기보다는 문제가 있다는 것을 알고 있습니다. –

+0

개체에 대한 포인터가 있어도 콘텐츠가 삭제됩니다? 내 질문이 틀렸어. 나는 다시 게시 할 것이다. http://stackoverflow.com/questions/2797298/how-does-core-data-determine-if-an-nsobjects-data-can-be-dropped – respectTheCode

관련 문제