Programming/Mac & iOS

[iOS] "%zd, %tu, %tx" 아키택처 관련 Data Format

MB Brad KWON 2017. 5. 22. 14:41

    iOS에서 64비트를 사용하면서, 각 데이터 사이즈의 변화가 생겼다. 특히 NSInteger, NSUIntger 등등의 'NS'라는 접두어가 붙는 primitive type의 사이즞 각 아키텍처 별로 다르다. 예를 들어 NSInteger의 경우, 32비트에서 int 타입으로 4 바이트를 가진다. 반면 64비트에서는 long 타입으로 처리되어 8바이트가 된다. print (NSLog) 문을 통하여 출력을 할때, 데이터의 사이즈가 전달되는데, 이렇게 데이터의 사이즈가 아키텍처별로 다르기 때문에 컴파일을 하다보면 워닝을 발견할 수 있다. 이와 같은 워닝을 방지하기 위해 위의 데이터 포맷이 필요하다.


    %zd, %tu, %tx는 32/64 비트 아키택처에 맞추어 데이터 사이즈를 전달한다. 단, %zd는 signed/ %tu는 unsigned/ %tx는 hexa를 표현하는데, 사용된다. 이에 관한 apple의 도큐먼트 링크를 남긴다. 해당 링크를 확인해보면 앞에서 언급한 3가지 데이터 포맷 외에도 여러가지 데이터 포맷을 확인할 수 있다.



Document : https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html