[objective-c] NSInteger를 int로 변환하는 방법?

예를 들어 다음 과 같이 인스턴스에 value메시지를 전달할 때NSInteger

[a value] EXC_BAD_ACCESS가 발생합니다.

그래서 어떻게이 변환 NSIntegerint?

관련이있는 경우 32 미만의 작은 숫자 만 사용됩니다.



답변

따다 :

NSInteger myInteger = 42;
int myInt = (int) myInteger;

NSInteger32/64 비트 정수에 지나지 않습니다. (실행중인 OS / 플랫폼에 따라 적절한 크기를 사용합니다.)


답변

이 작업을 인라인으로하려면 NSUInteger또는 NSInteger을 다음과 같이 캐스트하십시오 int.

int i = -1;
NSUInteger row = 100;
i > row // true, since the signed int is implicitly converted to an unsigned int
i > (int)row // false


답변

나는 당신이 변환해야하는 상황에 대한 확실하지 않다 NSIntegerint.

NSInteger는 단지 typedef입니다 :

NSInteger 32 비트 또는 64 비트 시스템 용으로 빌드하는지 여부와 관계없이 정수를 설명하는 데 사용됩니다.

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger;
#else
typedef int NSInteger;
#endif

사용 NSInteger하는 모든 장소를 int변환하지 않고 사용할 수 있습니다 .


답변

UIsegmentedControl에서 일반적으로 사용되는 “오류”는 32 비트 대신 64 비트로 컴파일 할 때 나타납니다. 새 변수에 전달하지 않는 쉬운 방법은 다음 팁을 사용하는 것입니다. (int) 추가 :

[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];

대신에 :

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];


답변