2010-08-01 5 views

답변

0

이 예는 누출 될 것입니다. 당신은

numberFormatter = [[NSNumberFormatter alloc] init]; 
4

코드의이 조각은 "싱글 톤 패턴", 또는 매우 비슷한 implemets 곳에서 오는 나에게 보인다 ... A는 여기에 하나의 수를 유지해야합니다. 변수가 static이므로 함수 호출 사이에 해당 값이 기억됩니다. 즉, 응용 프로그램의 수명 기간에 번만 번만 할당됩니다.

이 코드에서 numberFormatter 변수는 응용 프로그램에서 전체 수명 동안 언제든지 필요로 할 수있는 것으로 보입니다. 따라서이 변수를 해제 할 필요가 없습니다.
응용 프로그램에서 자주 필요한 경우이를 해제하는 것이 더 현실적이지 않을 수 있습니다. 이는 불필요한 메모리 할당 및 할당 취소 작업을 유발합니다.

응용 프로그램이 더 이상 실행 한 후 응용 프로그램 에 속하는 모든 메모리 운영 체제에 의해
을 해제되지됩니다 참고 것을

.
이렇게하면 해당 변수에 할당 된 메모리도 해제됩니다.

이 개체가 메모리 이외의 리소스를 사용하면 명시 적 정리가 필요하지만 그렇지 않은 경우에는 필요하지 않습니다.

2

numberFormatter 변수가 static이기 때문에 메모리가 누출 될 것이라고 생각하지 않습니다. 이는 단지 하나의 복사본 만 있고 함수 호출 사이에 참조가 남아 있기 때문입니다. 당신이 새로운 것을 만드는 유일한 시간은 아직 존재하지 않는다면 당신은 오직 하나의 사본만을 가질 것입니다.

-1

이 같은 "ALLOC"를 수행 할 때 :

numberFormatter = [[NSNumberFormatter alloc] init]; 

개체를 "해제"해야하거나 누출 :

[numberFormatter release]; 
+0

이 예제에서는 변수가 정적 인 것을 잊어 버렸습니다. – Venemo

1

그것은 나타납니다 그 의도 이 코드는 numberFormatter를 한 번 할당하고 프로그램의 전체 수명 동안 계속 유지하는 것입니다. 응용 프로그램이 닫힐 때 모든 메모리가 자동으로 해제되므로이 방법으로 사용할 때 메모리를 비울 필요가 없습니다. 그럼에도 불구하고 보유하고있는 모든 메모리 조각을 릴리스하는 것은 여전히 ​​좋은 습관입니다.