2012-04-08 3 views
1

私はiOSアプリケーションで作業していますが、AFNetworkingを使用してhttp要求を行う際に問題があります。AFNetworking setCompletionBlock内のEXC_BAD_ACCESS

コードを実行すると、エラーが発生します:EXC_BAD_ACCESS(コード= 2アドレス= 0x0)。 setCompletionBlockを実行しようとするとエラーが発生しています。

私はObjective-Cを初めて使っています。これは私に悩まされています。

ありがとうございます。誰もが助けてくれてありがとう!

#import "AFNetworking.h" 
#import <Cordova/CDV.h> 
#import "UploadImg.h" 

@implementation UploadImg 

- (void) uploadImg:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options{ 
    NSURL *url = [NSURL URLWithString:@"http://test.com/mobile/"]; 
    AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 

    NSData *imageData = [NSData dataFromBase64String:[arguments objectAtIndex:1]]; 

    NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; 
    [params setObject:@"TEST_STYLE" forKey:@"styleType"]; 

    NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload.php" parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 
     [formData appendPartWithFileData:imageData name:@"imageName" fileName:@"image.png" mimeType:@"image/png"]; 
    }]; 

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request]; 

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"success"); 
    } 
    failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"error"); 
    }]; 

    [operation start]; 
} 

@end 

enter image description here

おかげで再び!

答えて

1

Objective-Cの楽しい世界へようこそ@kev_addict!

EXC_BAD_ACCESS例外が発生した場合は、詳細を把握して、問題のコールのスタックトレースの外観を確認してください。

追加情報がなくても、配列から画像データを取得する方法のどこかに問題があることがわかりました。この方法でUIImage引数を取らない理由がありますか?このメソッドが画像データを必要とする配列を取ることを期待するのは奇妙に思えます。

+0

こんにちはMattt、返信に感謝。スクリーンショットを追加しました。私がスタックトレースの間違った場所を探しているかどうか教えてください。これは、私がphonegap/cordovaアプリケーションのために取り組んでいるプラグインのネイティブ部分です。だから、それはjavascriptファイルから呼び出されて、私は第二引数としてbase64でエンコードされたpngを渡しています。お時間をいただきありがとうございます! – kevinstueber

+1

好奇心をそそり、メソッドの引数から取得するのではなく、base64イメージの文字列をハードコードし、同じエラーが発生しました。私が 'operation setCompletionBlock ...'部分をコメントアウトすると、エラーは発生しません... – kevinstueber