Misalnya saat menyampaikan valuepesan ke NSIntegerinstance seperti itu
[a value] itu menyebabkan EXC_BAD_ACCESS.
Jadi bagaimana mengkonversi NSIntegerke int?
Jika relevan hanya angka kecil <32 yang digunakan.
Misalnya saat menyampaikan valuepesan ke NSIntegerinstance seperti itu
[a value] itu menyebabkan EXC_BAD_ACCESS.
Jadi bagaimana mengkonversi NSIntegerke int?
Jika relevan hanya angka kecil <32 yang digunakan.
Jawaban:
Ta da:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSIntegertidak lebih dari int 32/64 bit. (ini akan menggunakan ukuran yang sesuai berdasarkan OS / platform apa yang Anda jalankan)
Jika Anda ingin melakukan ini sebaris, cukup transmisikan NSUIntegeratau NSIntegerke 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
NSIntegernilai sebagai pengganti int. Dalam kedua kasus ini, ini bukan solusi multi-garis.
Saya tidak yakin tentang keadaan di mana Anda perlu mengonversi NSIntegermenjadi int.
NSInteger hanyalah typedef:
NSInteger Digunakan untuk mendeskripsikan integer secara independen apakah Anda sedang membuat untuk sistem 32-bit atau 64-bit.
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
Anda dapat menggunakan NSIntegertempat mana pun yang Anda gunakan inttanpa mengubahnya.
Biasanya digunakan di UIsegmentedControl, "error" muncul saat mengompilasi dalam 64bits, bukan 32bits, cara mudah untuk tidak meneruskannya ke variabel baru adalah dengan menggunakan tips ini, tambahkan (int) :
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
dari pada :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];