Zum Beispiel, wenn Sie eine valueNachricht an eine NSIntegersolche Instanz übergeben
[a value] es verursacht einen EXC_BAD_ACCESS.
Wie konvertiere ich ein NSIntegerin int?
Wenn es relevant ist, werden nur kleine Zahlen <32 verwendet.
Zum Beispiel, wenn Sie eine valueNachricht an eine NSIntegersolche Instanz übergeben
[a value] es verursacht einen EXC_BAD_ACCESS.
Wie konvertiere ich ein NSIntegerin int?
Wenn es relevant ist, werden nur kleine Zahlen <32 verwendet.
Antworten:
Ta da:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSIntegerist nichts weiter als ein 32/64 Bit int. (Es wird die entsprechende Größe verwendet, je nachdem, welches Betriebssystem / welche Plattform Sie ausführen.)
Wenn Sie dies inline tun möchten, setzen Sie einfach das NSUIntegeroder NSIntegerauf ein 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
NSIntegerWert anstelle von a zu verwenden int. In keinem Fall handelt es sich um eine mehrzeilige Lösung.
Ich bin mir nicht sicher, unter welchen Umständen Sie ein NSIntegerin ein konvertieren müssen int.
NSInteger ist nur ein typedef:
NSInteger Wird verwendet, um eine Ganzzahl zu beschreiben, unabhängig davon, ob Sie für ein 32-Bit- oder ein 64-Bit-System erstellen.
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
Sie können NSIntegerjeden Ort verwenden, den Sie verwenden, intohne ihn zu konvertieren.
In UIsegmentedControl häufig verwendet, wird beim Kompilieren in 64-Bit statt 32-Bit "Fehler" angezeigt. Eine einfache Möglichkeit, es nicht an eine neue Variable zu übergeben, besteht darin, die folgenden Tipps zu verwenden: add (int) :
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
anstatt :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];