A는 카운트가 0 이상하지만 결코 덜 수 있습니다 유지 :
그래서 아니, 우주는 그 시점에서 존재하지 않습니다. 객체에 힙 메모리 (
alloc init
)가 할당되면 보유 수는 1로 설정됩니다. 그런 다음 보유 수를 늘리려면
retain
을 호출하면됩니다. (무제한으로 알고 있지만 잘못되었을 수도 있음).
release
호출
단순히 주기적 객체의 카운트를 유지 확인하여 이미 할당 해제 개체 release
호출 0
의 개수와 임의의 할당을 해제 중 하나를 호출하는 것과 동일하다 다음 (1)에 의해 시스템을 유지할 수 감소 메서드를 사용하여 NULL
또는 void
을 반환해야합니다. 그러나 힙 메모리를 관리하는 것이 확실하다면 VERY에 대해 알고 있어야합니다.
몇 가지 흥미로운 점 :
이
Why can a retain count be more that 1?
이는 여전히 다른 것을 요구하는 동안 객체가 해제되지 않도록이다. 예 : pet
owner
및 vet
이라고 말합니다. pet
인스턴스는 owner
인스턴스에 의해 소유됩니다. owner
은 vet
인스턴스로 이동하고 vet
은 pet
의 소유권을가집니다. 일정 기간 동안 pet
에는 두 명의 소유자가 있으므로 retain
이 호출 된 경우 보유 수는 2입니다. 이 pet
으로 끝나기 전에 owner
이 해제됩니다. 모든 것이 올바르게 수행 되었다면, release
으로 전화하여 owner
에서 reatain 카운트를 1로 줄이게됩니다. vet
은 pet
으로 끝낼 수 있으며 release
으로 전화하면 pet
이 할당 해제됩니다.
ARC
난 당신이 모두 계산 자동 참조로 대체되었습니다 알고 확신한다. 개발자는 객체가 다른 객체와 갖는 관계 유형을 간단하게 알아야합니다.
당신이 범위를 벗어날 떨어질 때 할당이 해제됩니다 이제 객체를 생성 따라서 경우 하지 않는가 다른 객체에 의해 강한 관계 (소유)가 있습니다. 두 객체가 서로 강한 관계를 가지고 있으므로 할당 해제 대상이되지 않는 경우에도 Reatain주기를 얻을 수 있습니다.
매우 긴 시간이 필요하지만 메모리 관리는 응용 프로그램 프로그래밍의 핵심 부분이며 매우 흥미 롭습니다.
"목표 초과 방출 C"검색 시도 –
Google에서 제안한 제안은 귀하에게 올 바릅니다. 당신이 틀린 분야의 일을하고있는 것처럼 보이는 것은 개발자가 아닌 사상가가되어야합니다. 메모리 관리에 대한 연구/노력을 분명히하기 위해서는 매우 열악합니다. 묻는 모든 질문에서 실제 세계와 관련이 없습니다. 지구가 왜 구체인지 묻는 것과 같습니다. 목표 C가 마음에 들지 않으면 자신 만의 언어를 만들어서 계속 보유 할 수 있습니다. 그것이 당신에게 의미가 있는지 알기도합니다. –
왜이 질문을합니까? 아무도 신경 쓰지 않는다. 다시 한번 메모리 관리에 대해 읽어보십시오. – matt