귀하의 질문에 대한 답변은 : 예, ARC을 사용하지 않는 경우 예. 새 앱을 작성하는 경우 ARC 사용을 진지하게 고려해야합니다.
Objective-C의 컨테이너 객체는 항상 보유/릴리스 횟수의 균형을 유지합니다. 즉, 객체를 추가하지 않은 것처럼 항상 메모리를 관리하고 코드가 보유 수와 균형을 유지하는지 확인해야합니다. 이것은 규칙이며 시행되지는 않지만 내장 클래스가이 규칙을 따르는 것을 항상 신뢰할 수 있습니다. 또한 이러한 문제를 감지하기 위해 정적 분석 (XCode에서 Cmd + Shift + B)을 수행 할 수 있습니다. 위의 코드에서이를 정확히 찾아 냈습니다.
경우 올바른 코드가 상술 될 것이다 :
NSMutableArray *array = [[NSMutableArray alloc]init];
Object *obj = [[[Object alloc]init]autorelease];
[array addObject: obj];
또는 NSMutableArray
(및 사촌) 보낸
NSMutableArray *array = [[NSMutableArray alloc]init];
Object *obj = [[Object alloc]init];
[array addObject: obj];
[obj release];
만큼는 컬렉션에서와 같이 개체를 유지할 것이다.
하지만 여기에 배열을 릴리스 ... 내가 물건을 릴리스 methode 보내드립니다. 만약 내가 틀렸다면 나를 수정하십시오 – Vinay
배열을 릴리스 그것과 아무 상관이 있습니다. 배열은 항상 release/retain의 균형을 유지합니다. 물론 배열을 릴리즈하는 것을 잊어 버리면 객체가 릴리즈되었는지 여부에 관계없이 누수가 발생합니다. – Krumelur
감사합니다 Krumelur – Vinay