케빈의 documentation를 참조 로빈의 대답이 가장 정확합니다. 오스카의 대답은 정확하기에 가깝습니다. 그러나 Gnustep 문서 나 logancautrell이 존이 존재하는 이유는 정확하지 않습니다.
존은 처음에 만들어졌습니다. 첫 번째 NXZone, 다음 NSZone은 단일 구역에서 할당 된 객체가 메모리에서 상대적으로 인접 해 있다는 것을 보장합니다. 결과적으로 앱이 사용하는 메모리 양은 줄어들지 않습니다. 대부분의 경우 약간 증가하게됩니다.
큰 목적은 일련의 대상을 대량으로 파괴 할 수있게하는 것이 었습니다.
예를 들어, 복잡한 문서를 문서 기반 응용 프로그램에로드하는 경우 문서가 닫힐 때 개체 그래프를 분해하는 것은 실제로 상당히 비쌀 수 있습니다. 문서에 대한 모든 오브젝트는 하나의 영역 및에서 할당 된 경우
따라서, 그 영역의 할당 메타 데이터는 그 영역에서도 한 후, 문서에 관련된 모든 오브젝트의 파괴로 싼 것 간단히 영역을 파괴하는 것입니다. (정말 싸구려 - "여기, 시스템,이 페이지들을 다시 가지고 있습니다"- 하나의 함수 호출).
이렇게되면 작동하지 않습니다. 영역에있는 객체에 대한 단일 참조가 영역 밖으로 유출 된 경우 문서가 닫히 자마자 응용 프로그램이 BOOM이되고 객체가 참조하는 내용이 무엇인지 알릴 방법이 없습니다. 둘째,이 모델은 GC 시스템에서 자주 발생하는 "희소 자원"문제에 대한 피해를 입었습니다. 즉, 문서의 객체 그래프가 메모리가 아닌 리소스에 보관되면 영역 삭제 전에 효율적으로 해당 리소스를 정리할 방법이 없습니다.
결국 취약성이 추가 된 거의 모든 성능 상실 (복잡한 문서를 얼마나 자주 닫는 지)의 조합은 영역을 좋지 않게 만듭니다. API를 변경하기에는 너무 늦었고, 우리는 흔적을 남겼습니다.
신난다. 나는 당신이 대답 할 것이기를 바랬다. 참고로,이 문서는 언제든지 Apple 문서에 기록되어 있습니까? 오늘 찾을 수있는 것은 NSZone * 기초 방법입니다. – logancautrell
내 관심을 불러 일으키고 싶은 질문이 있으면 Twitter에서 나에게 묻어주세요. 언어 (및 OS)의 진화는 정말 매력적입니다. 그것이 문서화 되었다면, 아마도 랩소디 시대 동안 남은 것이었을 것입니다. 존이 적절한 맥 오에스텐 릴리스에서 추천 된 적이 없다고 생각한다. – bbum
귀하의 게시물은 귀하의 고유 한 지위와 경력으로 인해 매우 중요하다고 생각합니다. 더 많은 Apple 엔지니어들이 여기서 시간을 보냈 으면 좋겠습니다. – logancautrell