나는 혼란 스럽다. NSData의 sizeof
과 .length
사이의 차이점은 무엇입니까? 길이는 문자 수입니까? 권리? 그러나 sizeof를 의미합니까? 아무도 나를 더 정확하게 설명 할 수 있습니까 pl30NSData의 sizeof와 길이의 차이
0
A
답변
3
sizeof()
은 유형의 저장소 크기를 반환하고 컴파일 타임에 평가되는 언어 키워드입니다. 예를 들어
:
NSData *obj = [NSData data];
NSLog(@"%lu", sizeof(obj));
가 obj
같은 64 비트 플랫폼에서 32 비트 플랫폼이나 8 중 4를 인쇄 할 포인터이며, 그 포인터가 그 플랫폼에서 차지하는 공간입니다. 에 컴파일되는
NSLog(@"%lu", 4);
또는
NSLog(@"%lu", 8);
플랫폼에 따라 다음과 같이
그것은 동일합니다.
그러나 NSData
은 데이터를 저장하는 개체이며, 현재 저장중인 데이터의 양을 조사 할 수 있도록 length
메서드를 제공합니다. 런타임시 평가됩니다.
NSLog(@"%lu", obj.length);
0은 그 것으로서 NSData
개체가 비어 있습니다.
0
저는 iOS에 익숙하지 않지만 약간 보았습니다. .Length
은 "수신자에 포함 된 바이트 수"인 것 같습니다. .sizeof
은 "전체 NSData 구조가 메모리에서 차지하는 실제 바이트 수"를 나타냅니다. length
20 개 문자 (20)를 수 있지만 C 번호가 유니 코드를 사용하는 반면 - sizof()
은 .... (40) 그러나, 다른 개체가 완전히 다른 방식으로 작동 할 수 있습니다
다른 언어에서는 다르게 작동 할 수
그러나 귀하의 예제에서 sizeof()
은 포함 된 데이터의 크기 또는 크기에 관계없이 NSData 내부 구조 (실제 데이터, 카운터 등의 포인터와 같은)가 차지하는 바이트 수를 반환 할 수 있습니다. .sizeof
의 결과가 단지 4
또는 8
될 것입니다 - -
Google에 어떻게 잊어 버리면 참으로 혼란 스러울 수 있습니다 ... – holex