0

코어 데이터 엔티티의 관계에 대한 정렬을 시도하고 있습니다. 예를 들어 직원 개체가 있고 부서 관계가 있습니다.코어 데이터 및 NSSortDescriptor - 메모리 기초

  1. 은 내가 departments (NSSet)를 꺼내하는 방법을 쓰기 직원
  2. 의 NSFetchRequest을하고 그것은 나에게 정렬 된 부서

내가 사용하는 코드는 다음과 같다을 가져옵니다.

[tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 

나는 언젠가 얼마 후에도 메모리가 유지되는 것을 보았으며, 오랜 시간이 지나면 메모리가 유지되는 것을 보았습니다.

나는 이유

//[moc setRetainsRegisteredObjects:YES];

그러나 그것은 도움이되지에게 수이 줄 생각을 제거했습니다. 나는 코어 데이터 객체의 NSSet에있는 모든 객체 메소드가 메모리에서 범프를 일으키고 또한 sortedArrayUsingDescriptors 딥 복사를 수행한다는 것을 이해하고 싶습니까? 나는 그것이 얕은 복사본이라는 것을 알고있다. 그리고 객체의 배열을 사용하여 얻은 후에도 메모리가 유지되는 논리적 인 이유는 무엇일까? sortedArrayUsingDescriptors을 사용했다.

+0

먼저 질문을 명확히해야합니다. 또한 올바른 방식으로 형식을 지정해야합니다. 그렇다면 ARC를 사용하고 있습니까? 마지막으로, 큰 메모리 공간은 어디에서 볼 수 있습니까? –

답변

0

내 의견에 이미 언급했듯이 질문에 대한 몇 가지 상황을 제공해야합니다. 악기에서이 동작을 보았습니까?

어쨌든, 대신 가져 오는 다음 정렬, 당신은 내가 당신의 문제 술어가 부서 당신에게 줄 것을 이해하는 경우 특정 조건에 따라 Department에 대한 ((setSortDescriptors:를 사용하여 NSFetchRequest를) 정렬 동시에 가져올 수 있습니다 특정 직원에게 속한). 이런 식으로 정렬은 SQL 레벨에서 수행됩니다. 또한

[tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 

무엇 sortDescriptor에 대해 관련된 사용하는 코드를 제공해야

? ARC를 사용하지 않는 경우 alloc-initsortDescriptor을 할당 해제해야합니다. 그렇지 않으면 누출이 발생합니다.