Örneğin, böyle value
bir NSInteger
örneğe mesaj iletirken
[a value]
EXC_BAD_ACCESS'e neden olur.
Peki nasıl bir dönüştürmek NSInteger
için int
?
Eğer ilgiliyse, sadece 32'den küçük sayılar kullanılır.
Örneğin, böyle value
bir NSInteger
örneğe mesaj iletirken
[a value]
EXC_BAD_ACCESS'e neden olur.
Peki nasıl bir dönüştürmek NSInteger
için int
?
Eğer ilgiliyse, sadece 32'den küçük sayılar kullanılır.
Yanıtlar:
Ta da:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger
32/64 bitlik bir int'den başka bir şey değildir. (çalıştırdığınız işletim sistemine / platforma bağlı olarak uygun boyutu kullanacaktır)
Bu satır içi yapmak istiyorsanız, sadece döküm NSUInteger
veya NSInteger
bir etmek 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
değeri yerine bir int
. Her iki durumda da çok hatlı bir çözüm değildir.
Ben bir dönüştürmek için gereken şartlar hakkında emin değilim NSInteger
bir etmek int
.
NSInteger yalnızca bir typedef:
NSInteger 32 bitlik veya 64 bitlik bir sistem için oluşturduğunuzdan bağımsız olarak bir tamsayıyı tanımlamak için kullanılır.
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
Kullandığınız NSInteger
herhangi bir yeri int
dönüştürmeden kullanabilirsiniz .
UIsegmentedControl'de yaygın olarak kullanılan "hata", 32 bit yerine 64 bit olarak derlenirken görünür, yeni bir değişkene aktarmamanın kolay yolu bu ipuçlarını kullanmaktır, ekleyin (int) :
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
onun yerine :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];