我总结了两个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 。
所以它是四个人,但我无法理解为什么。
答案 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个字节。