2016-06-28 7 views
0

Xcode 8 (베타 1)의 정적 분석기에서 NSStringinitWithBytesNoCopy:length:encoding:freeWhenDone:new[]에 의해 할당 된 메모리의 소유권을 가져갈 수 없다고 경고합니다. 이 오류가 있습니까? 그렇지 않은 경우, 왜이 경우입니까?왜 NSString은 새로운 것으로 할당 된 메모리의 소유권을 가질 수 없습니까?

new[] 대신 calloc을 사용하도록 할당을 변경하면 경고 메시지가 사라집니다.

+1

NSString과 C++이 잘 어울리지 않는다고 생각합니다. – Avi

+0

@ user3386109 답변으로 게시하십시오. –

+0

@ AminNegm-Awad 알았어, 알았어. – user3386109

답변

4

문서이는 freeWhenDone 매개 변수에 대해 말한다 :

YES, 수신기와 메모리를 해제하면 더 이상 데이터를 필요로 할 때) (무료; 아니오라면 그렇지 않을 것입니다.

따라서 freeWhenDone은 완료시 문자 그대로 free()을 호출합니다. new[]으로 작업하려면 완료되면 delete[]해야합니다. 따라서 경고 메시지가 올 바릅니다. 바이트를 복사하지 않으려면 freeWhenDoneNO으로 설정하고 더 이상 필요하지 않은 바이트를 delete[]으로 설정해야합니다.