이것은 아마도 객체 alloc/retain/release에 대한 질문이지만 NSString을 예로 사용합니다. 나는 내가 할 수있는 것을 알고 있어요 :obj-c NSString 및 alloc/retain/release
NSString* myString = [[NSString alloc] initWithString:@"Test"];
은 본질적으로 할당하고 나중에시 [mystring에 릴리스] 호출해야 내 변수 mystring에 의해 참조 문자열을 초기화 할 수 있습니다. 나는이 작업을 수행 한 후 그러나, 나는 다른 문자열 등으로 설정합니다
myString = someOtherString;
내가 다른 객체에 내 포인터를 재 할당하고 원래의 모든 참조를 상실했기 때문에 기본적으로 메모리 누수를 만드는 것이 수행 할당 했어?
문자열을 개별적으로 할당하고 해제 한 다음 여러 번 값을 변경하려는 경우 '='이외의 다른 구문을 사용해야합니까, 아니면 해당 객체의 내용을 적절히 변경하기 위해 오버로드 된 것입니까? =를 사용할 때 원래 myString이 나타냅니다.
당신이 제대로 또 다른 포인터 값을 지정하기 전에 소유권을 포기하는 경우
맞아요. 기억 누출은 단어가 다가 가면서 사람들의 개를 잃어 버리는 것처럼 주변에 마르는 사람들을 걷는 개와 비슷합니다. – jasongetsdown
나는 당신의 유추가 조금 짧다고 생각합니다. 왜냐하면 "가죽 끈"이 참조 횟수와 같고 개가 고리에 붙어 있지 않은 가죽 끈을 가지고 있다면 개가 도망칩니다. 그러면 나의 예는 가죽 끈을 너무 많이 잡아 내지 않을 것이기 때문입니다 다른 개를 보면서 내 가죽 끈을 놓고 다른 개를 보려고하는 것. 더 정확한 비유와 같은 소리는 가죽 주전자에 연결하거나 가죽 끈을 연결하는 끈을 추가하는 것만큼 가죽 끈을 들고있는 소유자를 갖지 않는 것입니다.하지만 그 해명에 감사드립니다. :) – Joey
Sheesh, 모두 비평가입니다 ... ACBurk의 설명은 훌륭했습니다 (프로그래머!) – pchap10k