2009-12-02 4 views
9

나는 NSStringCGFloatNSInteger과 같은 유형으로 안전하게 변환하거나 적절하게 변환하는 것에 대해 질문이 있습니다. 이는 이들이 단순히 특정 요소 (예 : NSInteger은 32에 int로 x는 32 64 비트 아키텍처에서는 long).NSString을 CGFloat, NSInteger 등으로 적절하게 변환

예를 들어, [ someString intValue ] 또는 [ someString longValue ]와 같은 것을 사용할 수 있다는 것을 알고 있습니다.하지만 대신 someString을 사용하여 기본 원시의 정밀도를 컴파일러가 선택할 수있게하려면 어떻게해야합니까? someString이 64 비트 시스템의 NSInteger에서 작성된 경우 NSInteger integer = [ someString intValue ]와 같은 것을 사용하면 데이터가 손실됩니다. 맞습니까? 이 상황을 처리하는 가장 좋은 방법은 무엇입니까?

답변

11

대신 integerValue을 사용하십시오. 문자열을 나타내는 정수가 32 비트 INT_MAX보다 큰 경우에만 int를 가져 오는 것이 문제를 일으키지 만 호환되는 방법을 사용하는 것이 더 좋습니다.

+0

아, 감사합니다. 나는 'integerValue'를 보지도 않았다. – LucasTizma

+0

그렇기 때문에 주요 OS 버전이 나올 때마다 릴리스 정보를 읽어야합니다. 수년 동안 우리가 알고 사랑해 왔던 수업에는 항상 편리한 추가 사항이 몇 가지 있습니다. – NSResponder

+1

CGFloat로 변환하는 것은 어떨까요? – Casebash