저는 iOS 5 및 ARC를 처음 사용하므로 내 바보 같은 질문을 용서하십시오.ARC (Automatic Reference Counting)가 메모리 누수에 미치는 영향
우리 프로젝트에서 ARC를 사용한다면 메모리 누수가 전혀 없음을 의미합니까?
ARC를 사용할 경우 메모리 누수 및 NSZombies를 탐지하기 위해 Instruments를 사용할 필요가 있습니까?
저는 iOS 5 및 ARC를 처음 사용하므로 내 바보 같은 질문을 용서하십시오.ARC (Automatic Reference Counting)가 메모리 누수에 미치는 영향
우리 프로젝트에서 ARC를 사용한다면 메모리 누수가 전혀 없음을 의미합니까?
ARC를 사용할 경우 메모리 누수 및 NSZombies를 탐지하기 위해 Instruments를 사용할 필요가 있습니까?
ARC를 사용하면 특정 유형의 누출을 제거하는 데 도움이됩니다. 이는 또는 autorelease
개의 단일 개체를 잊지 않기 때문입니다. 예를 들어 다음 유형의 오류는 불가능합니다.
myLabel.text = [[NSString alloc] initWithFormat:@"%d", 17];
// oops, just leaked that NSString!
그러나 ARC는 유지주기로 인한 누출을 제거하지 않습니다. 약한 참조를 사용하거나주기가 누출되기 전에 수동으로 브레이크를 해제하여 보관주기를 제거하는 것은 귀하에게 달려 있습니다. 예를 들어 블록을 더 많이 사용하기 시작하면 블록/자체 유지 사이클이 훨씬 더 많이 보입니다. Transitioning to ARC Release Notes은 약한 참조를 사용하여 이러한주기를 피하는 방법에 대해 설명합니다.
ARC를 이해하려면 [WWDC 2011] (https://developer.apple.com/videos/wwdc/2011/)의 "Automatic Reference Counting"비디오를 적극 권장합니다. –
이 질문과 같은 상황에서 내가 할 수있는 일 http://stackoverflow.com/questions/21423309/memory-leak-in-nsstring-stringwithutf8string-with-arc-enabled – deltaaruna
아니요, 그렇다고해서 메모리 누수가 발생하지 않습니다. 참조 횟수가있는 런타임에서 어떤 일이 발생하는지에 따라 코드에서 매달린 참조를 남기고 객체가 해제되지 않는 경우가 있습니다. 좋은 코드를 작성하는 것은 당신에게 달려 있습니다.
확인. 그러면 NSZombies에도 똑같은 것이 적용될 것입니까? – meetpd
우리 프로젝트에서 ARC를 사용하면 메모리 누수가 전혀 없음을 의미합니까?
누출이있을 수 있습니다 - 프로그램 및 라이브러리에 있습니다. 또한 ARC는 ObjC 객체에만 적용됩니다. objc 객체가 아닌 힙 할당은 쉽게 누출 될 수 있습니다 (예 : malloc
/new
).
ARC를 사용하면 메모리 누수 및 NSZombies를 탐지하기 위해 Instruments를 사용할 필요가 있습니까?
예. 이전 응답은 왜 귀하의 프로그램이 이러한 문제로부터 자유롭지 않을지를 자세히 설명해야합니다. 또한 바보 같은 일을하면 컴파일러가 잘못 처리 할 수 있으며 데이터를 적절하게 보호하지 않으면 (예 : 동시 실행) 확실히 문제를 일으킬 수 있습니다.
아니요, ARC는 메모리 누수를 완전히 없애지 않습니다. [Objective-C의 자동 참조 카운팅 (Xcode 4.2에서 어떤 종류의 누수가 방지/최소화되지 않는 것입니까?)] (http://stackoverflow.com/questions/6260256/what-kind-of-leaks-does-objective-cs)을 참조하십시오. -automatic-reference-xcode-4-2) – BoltClock