Im có một vấn đề tổng hợp hai NSInteger, tôi đã thử với int đơn giản nhưng không thể tìm thấy câu trả lời. I Have này trong hồ sơ tiêu đề của tôi:Tổng hai NSInteger cho kết quả không chính xác
@interface ViewController : UIViewController {
NSMutableArray *welcomePhotos;
NSInteger *photoCount; // <- this is the number with the problem
//static int photoCount = 1;
}
Các trên fiel thực hiện của tôi, tôi có:
-(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);
}
Các las NSLog luôn in 0 + 1 = 4
Ngoài ra nếu nếu làm :
if (photoCount < [welcomePhotos count]){
photoCount++;
NSLog(@"%i", photoCount);
}else{
photoCount = 0;
}
Nhiều lần tôi nhận được: 4, 8, 12.
Vì vậy, nó đang bỏ qua bốn, nhưng tôi không thể hiểu tại sao.
Vấn đề là bạn đã tuyên bố 'photoCount' là một con trỏ đến một' NSInteger'. Hãy nhớ rằng 'NSInteger' là một typedef cho số nguyên đã ký (32-bit hoặc 64-bit tùy thuộc vào hệ thống). –
có thể vì NSInteger là một int đặc biệt có các giá trị khác nhau khi chạy theo số bit của biểu mẫu của bạn (32 bit hoặc 64 bit). –