Frage

Zum Beispiel, wenn wie so eine value Nachricht an eine NSInteger Instanz zu übergeben

[a value] es verursacht eine EXC_BAD_ACCESS.

So wie ein NSInteger zu int konvertieren?

Wenn es relevant ist nur eine geringe Anzahl <32 verwendet werden.

War es hilfreich?

Lösung

Ta da:

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

NSInteger ist nichts anderes als ein 32/64 Bit int. (Es wird die passende Größe verwenden, basierend auf, was OS / Plattform du läufst)

Andere Tipps

Wenn Sie das Inline tun wollen, werfen Sie einfach die NSUInteger oder NSInteger zu einem 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

Ich bin mir nicht sicher über die Umstände, unter denen Sie benötigen einen NSInteger zu einem int zu konvertieren.

NSInteger ist nur ein typedef:

NSInteger Verwendet, um eine ganze Zahl, unabhängig von zu beschreiben, ob Sie bauen für einen 32-Bit- oder 64-Bit-System.

#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 NSInteger nutzen jeden Ort, den Sie eine int verwenden, ohne sie zu konvertieren.

Häufig in UISegmentedControl verwendet, „Fehler“ angezeigt, wenn in 64 Bit anstelle von 32 Bit, einfacher Art und Weise der Zusammenstellung für Geben Sie es nicht auf eine neue Variable wird diese Tipps zu verwenden, fügen Sie (int) :

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

statt:

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top