2013-01-21 25 views
5

İki NSInteger toplama sorunu yaşıyorum, basit int ile çalıştım ama cevabı bulamıyorum. Benim başlık dosyası bu var:Toplam iki NSInteger yanlış sonuç veriyor

@interface ViewController : UIViewController { 
NSMutableArray *welcomePhotos; 
NSInteger *photoCount;  // <- this is the number with the problem 
//static int photoCount = 1; 
} 

benim uygulanması fiel ben vardır:

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

    photoCount = 0; 
    welcomePhotos = [NSMutableArray array]; 


    int sum = photoCount + 1; 

    NSLog(@"0 + 1 = %i", sum); 

} 

las NSLog hep aynı 0 + 1 = 4

yazdırır yaparsanız eğer :

if (photoCount < [welcomePhotos count]){ 
    photoCount++; 
    NSLog(@"%i", photoCount); 
}else{ 
    photoCount = 0; 
} 

Birkaç kez elde ederim: 4, 8, 12.

Yani dört tarafından atlıyor, ancak nedenini anlayamıyorum. NSInteger photoCount;

NSInteger için

+2

ile değiştirin. Unutmayın ki "NSInteger" imzalı tamsayı için bir yazım hatasıdır (sisteme bağlı olarak 32-bit veya 64-bit). –

+0

belki de NSInteger, çalışma zamanınızdaki farklı değerleri alan formunuzun (32 bit veya 64 bit) bit sayısına göre özel bir int olduğu için olabilir. –

cevap

3

Sen bir tamsayı bir değişken ++ yapıyor

int photocount; 

değiştirmeyi deneyin Eğer

NSInteger* photocount; 

olarak ilan ettik ben inanıyorum bir işaretçi nesne yazdırmak olduğunuz bir boyutunu ekler iOS'ta 4 bayt olan işaretçi.

+1

Neden NSInteger fotoğraf sayısı; '? – vikingosegundo

3

Sen NSInteger işaretçiyi kullanılan ...

Değişim bunu sadece bir int ve bir sarıcı nesne olarak davranıyorlar. İşaretçi gerekli değil.

+0

Teşekkürler, o daha fazla çalışmam gerekir –

5

photoCount örnek varlığınızı işaretçisi - NSInteger olarak bildiriyorsunuz. Ancak NSInteger skaler bir türüdür.
.h dosyasındaki yıldız işaretini kaldırın ve tekrar deneyin.

sorun bir `NSInteger` bir işaretçi olarak` photoCount` ilan ettik olmasıdır

NSInteger *photoCount; 

NSInteger photoCount; 
+1

En iyi cevap ancak bir dakika geç;) –

İlgili konular