0

몇 가지 해답을 보았지만 충분히 확장되지 않았고 ARC가 도입되기 전에 생각한 것 같습니다.ios에서 NSString = NSString이 메모리 누수를 유발합니까?

그래서 두 NSSstring 나는 메모리 누수 나 다른 문제없이

string1 =string2; 

또는

NSString * [email protected]"String"; 
[email protected]"Lead"; 

을 설정할 수 있습니다 내가 자격이 있습니까?

편집 :보기 컨트롤러 또는 대리인 속성을 (복사, 비 원자)로 설정하면 어떻습니까?

Edit2 : NSString * al = @ "String"이어야합니다. 나는 이것이 누설되지 않는다는 생각을 바꾸지 않기를 바랍니다.

+0

이 토론 포럼이 아닙니다. 하나의 집중적 인 질문을하고 질문에 대한 답변을 선택해야합니다. 사이트의 작동 방식에 대한 FAQ를 읽어보십시오. :) http://stackoverflow.com/faq – Almo

+0

나는 당신이 사이트에 최근에 있었는지, 아직 어떤 대답을 수락하지 않은 것을 참조하십시오. – Almo

답변

0

ARC에서 어느 쪽도 누출되지 않습니다.

그러나이 경우 참조를 다루고 있음을 알고 싶을 수도 있습니다. 복사 또는 인증 된 속성을 사용하지 않는 한 암시 적 복사는 수행되지 않습니다.

편집 : (복사, 비 원자)로 설정된보기 컨트롤러 또는 대리인 속성은 어떻게됩니까?

NSStrings? 예, copyNSString 초의 기본값이어야합니다. nonatomic이 모든 것에 대한 기본값이어야합니다. 물론, 예외가있을 때 - 기본값에서 벗어날 수 있습니다.

+0

예, 누출되지 않습니까? – user1515993

+0

@ user1515993 "예"NSString' 변수/속성은 'copy'여야합니다. 또한 ARC 하에서도 누출되지 않습니다. – justin

0

코드는 안전하며 누설되지 않습니다. 코코아 및 NSString은 이러한 문제를 어떻게 다루는 지에 대해 상당히 똑똑합니다.

NSString이 변경되지 않기 때문에 다른 흥미로운 일들로 끝날 수 있습니다. 포인터 자체에 대해 걱정하려고하면 이상한 결과를 얻을 수 있습니다. 그러나 당신의 사례는 이러한 문제로 고통받지 않습니다.

+0

어떤 종류의 이상한가요? – user1515993

+0

이것은이 질문의 범위를 벗어납니다. 하지만 다른 곳에서는 더 읽을 수 있습니다. 예 : http://stackoverflow.com/questions/9154288/why-does-nsstring-sometimes-work-with-the-equal-sign – Almo

1

아니요. 문자열 리터럴을 할당하고 다시 할당해도 메모리 누수가 발생하지 않습니다. ARC를 사용하지 않고 alloc, retain, copy, mutableCopy 또는 접두사가 붙은 방법을 new으로 지정하는 경우 메모리 누수에 대해서만 신경 쓰면됩니다.

NSString a1=[@"String" mutableCopy]; 
[email protected]"Lead";//This will cause a leak since you called copy above. 

자세한 내용은 Advance Memory Management Rule을 참조하십시오.

+0

포인터를 추가하는 것을 잊었습니다. NSString * al = @ "String"이라고 말해야합니다. 그것은 그것을 바꿀 수 있습니까? – user1515993

+0

포인터가 필요합니다. 그렇지 않으면 컴파일러 오류가 발생합니다. 포인터가 있다고 가정 할 때 이것은 바뀌지 않습니다. – Joe

+0

질문을 편집 할 수 있습니다. – Almo