2

Drupal-iOS-SDKをgithubから ダウンロードし、AFNetworkingファイルもここからダウンロードしました。

次に、ファイルをプロジェクトに追加しましたが、奇妙なエラーが表示されます

'void(^)(NSInteger、NSInteger、NSInteger)'をタイプ'void(^)(NSInteger、long long、long long)'のパラメーターに送信する互換性のないブロックポインター型

このコードの場合:

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {
        NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
    }];

これが何を意味するのか誰かが知っていますか?

4

1 に答える 1

2

1つ(符号なし整数)と2つのパラメーターが予想されるときにNSIntegerパラメーターとして3つのsを送信していますsetUploadProgressBlockNSUIntegerlong long

totalBytesWritten`NSIntegerではなく、そのように定義されているためtotalBytesExpectedToWrite、タイプである必要があります。long longコードは次のようになります。

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];

NSLogがに設定されているので、それに応じてNSLogを変更しlong longて、コンパイラが文句を言わないようにすることもできます。

NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
于 2012-09-10T11:20:10.510 に答える