예를 들어 다음 과 같이 인스턴스에 value
메시지를 전달할 때NSInteger
[a value]
EXC_BAD_ACCESS가 발생합니다.
그래서 어떻게이 변환 NSInteger
에 int
?
관련이있는 경우 32 미만의 작은 숫자 만 사용됩니다.
답변
따다 :
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger
32/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
답변
나는 당신이 변환해야하는 상황에 대한 확실하지 않다 NSInteger
에 int
.
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]];