5

2 つの 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 .

つまり、4 ずつスキップしていますが、その理由がわかりません。

4

3 に答える 3

5

photoCountインスタンス var をへのポインタとして宣言していますNSInteger。しかし NSInteger はスカラー型です。
.h ファイルのアスタリスクを削除して、もう一度やり直してください。

交換

NSInteger *photoCount; 

NSInteger photoCount; 
于 2013-01-21T18:08:26.450 に答える
3

あなたはへのポインタを使用しましたNSInteger...

に変更しますNSInteger photoCount;

NSInteger は単なる int であり、ラッパー オブジェクトとして扱っています。ポインターインは不要です。

于 2013-01-21T18:07:34.523 に答える
3

あなたはそれを次のように宣言したと私が信じているポインターオブジェクトを出力しています

NSInteger* photocount;

に変更してみてください

int photocount;

整数に対して variable++ を実行すると、iOS では 4 バイトのポインターのサイズが追加されます。

于 2013-01-21T18:07:41.060 に答える