-1

アプリでカウンターを作成しています。特定の変更が発生したときにインクリメントしたい。カウンターはその値を0から1に増やします。その後、1に固執し、さらに増加し​​ません。これは私のコードです。.hi でこれを行いました。

@interface URLCacheConnection : NSObject {
  int                     counter;

}

そして.mには

-(void) connection:(NSURLConnection *)conn didReceiveResponse:(NSURLResponse *)response {
if ([response isKindOfClass:[NSHTTPURLResponse self]]) {

    printf("[(NSHTTPURLResponse *)response allHeaderFields] = %s\n", [[(NSHTTPURLResponse *)response suggestedFilename] cStringUsingEncoding: 1]);
    NSDictionary *dict = [(NSHTTPURLResponse *)response allHeaderFields];
    NSLog(@"allHeaderFields = %@\n", [dict description]);

    if(downloadItem.downloadStatus != DownloadStatus_resumed)
    {
        if([[NSFileManager defaultManager] fileExistsAtPath: downloadItem.fileItem.filePath]) {
            counter = counter + 1;
            NSLog(@"the value of counter is %d", counter);

            NSString * fileExtension = [downloadItem.fileItem.fileName pathExtension];

            NSString *fileName = [downloadItem.fileItem.fileName  stringByDeletingPathExtension];

            fileName = [fileName stringByAppendingFormat:@"-(%d)", counter]; 
            fileName = [fileName stringByAppendingString:[NSString stringWithFormat:@".%@",fileExtension]];

            downloadItem.fileItem.fileName  = fileName;

            downloadItem.fileItem.filePath = [NSString stringWithFormat:@"%@/%@", downloadItem.fileItem.folderPath, downloadItem.fileItem.fileName];
        }
        else {
            counter = 0;
        }
        BOOL fileCreatedFlag = [[NSFileManager defaultManager] createFileAtPath: downloadItem.fileItem.filePath contents:nil attributes:nil];
        downloadItem.fileItem.fileHandle = [NSFileHandle fileHandleForWritingAtPath: downloadItem.fileItem.filePath];
        fileCreatedFlag = fileCreatedFlag;

    }

}

}

4

3 に答える 3

3

ジェームズこれは、self.counterが変数ではなく値を返すため、異なるアドレスが出力されるためです。正確なログを提供し、上記のコメントでKeety
が 提案したログを使用してください。

于 2012-05-10T05:52:37.653 に答える
1

ダウンロード ステータスが再開された場合は、カウンターを 0 にリセットします。議論のために、各ダウンロードが少なくとも 1 回再開された場合、カウンターはログに出力するときに常に 1 になります。

于 2012-05-11T00:44:27.513 に答える
0

これを試して:

NSInteger counter = 0;
counter = counter+1;
NSLog(@"the address of counter is %p",counter);
于 2012-05-10T05:53:47.230 に答える