nsinteger를 int로 변환하는 방법은 무엇입니까?
-
20-09-2019 - |
문제
예를 들어 전달할 때 a value
an에 대한 메시지 NSInteger
그렇게 인스턴스
[a value]
exc_bad_access를 유발합니다.
그래서 변환하는 방법 NSInteger
에게 int
?
관련이있는 경우 적은 숫자 <32 만 사용됩니다.
해결책
타다 :
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger
32/64 비트 int 이상입니다. (실행중인 OS/플랫폼에 따라 적절한 크기를 사용합니다)
다른 팁
이번을 인라인으로하고 싶다면 NSUInteger
또는 NSInteger
an 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
an 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에서 일반적으로 사용되는 "Error"는 32bits 대신 64BITS로 컴파일 할 때 나타나며 새 변수로 전달하지 않는 쉬운 방법은이 팁을 사용하는 것입니다. (int):
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
대신에 :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
제휴하지 않습니다 StackOverflow