求和两个NSInteger给出不正确的结果

时间:2013-01-21 18:03:51

标签: objective-c

我总结了两个NSInteger的问题,我尝试过简单的int但是找不到答案。我在头文件中有这个:

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

我的实施领域我有:

-(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始终打印 0 + 1 = 4

如果是这样的话:

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

我得到几次: 4,8,12

所以它是四个人,但我无法理解为什么。

3 个答案:

答案 0 :(得分:5)

您要将photoCount实例var声明为指针NSInteger。但是NSInteger是一种标量类型 删除.h文件中的星号,然后重试。

替换

NSInteger *photoCount; 

NSInteger photoCount; 

答案 1 :(得分:3)

您使用指向NSInteger ...

的指针

将其更改为NSInteger photoCount;

NSInteger只是一个int,您将其视为包装器对象。指针不是必需的。

答案 2 :(得分:3)

你打印出一个我相信的指针对象,因为你已将其声明为

NSInteger* photocount;

尝试将其更改为

int photocount;

在一个整数上做一个变量++会增加一个指针的大小,这个指针在iOS上是4个字节。