CLR은 가상 시스템에서 실행됩니다. 오브젝트의 모든 할당 해제는 가비지 콜렉션 시스템에 의해 처리됩니다. 일반적으로 Objective-C 메모리는 이전 C 스타일 malloc/free 또는 retain/release의 참조 계산 시스템을 통해 수동으로 관리해야합니다. 당신이 표준 "C"배경에서 오는 경우에, 기술은 너무 외국이게 보지 않을 것이다.
참조 계산에서 시스템은 특정 오브젝트가 몇 번 사용되었는지를 계산합니다. 이는 기본적으로 위에서 언급 한 "보유"입니다. 객체를 사용하여 무언가가 완료되면 객체는 수동으로 객체의 보유 수를 1 씩 감소시키는 "해제"메시지를 보냅니다. 계수가 0에 도달하면 시스템은 자동으로 객체의 할당을 해제합니다. 이것은 CLR/.NET에 비해 상당히 번거롭기는하지만 그 메커니즘은 더 나은 성능과 제어력을 제공합니다.
Macintosh에서 Objective-C 2.0으로 코딩하는 경우 Xcode의 옵션을 통해 가비지 수집을 활성화 할 수 있으므로 운이 좋을 것입니다. 이는 CLR이 제공하는 것과 더 가깝습니다. iPhone에서 개발하는 경우 가비지 수집은 메모리 및 CPU 측면에서 너무 많이 들기 때문에 옵션이 아닙니다. 메모리는 수동으로 관리해야합니다.
다행히도 개체에 "autorelease"메시지를 보내면 일반적으로 사용되는 중간 옵션이 있습니다. 매킨토시와 아이폰 모두에 포함 된이 메커니즘은 할당 된 객체를 기본적으로 글로벌 사전 (실제로는 자동 풀이라고도 함)에 저장합니다. 응용 프로그램이 있거나 풀이 비었을 때 개체는 할당이 해제됩니다. 그러나 모든 것이 자동 풀 풀에 들어가는 것은 아니며 모든 것을 자동으로 풀고 싶지는 않습니다. 나는 더 자세히 들어가는 Apple 사이트에서 Objective-C 2.0 프로그래밍 언어의 건조하지만 중요한 읽기를 권합니다.
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html
행운과 인내심을 가지고. Objective-C는 .Net (25 년 이상 된)과 같은 블록에 새로운 아이가 아니지만 .Net이 이제 통합하기 시작한 놀라운 기능이 있습니다.