在setCompletionBlock中AFNetworking EXC_BAD_ACCESS

时间:2012-04-08 14:41:28

标签: objective-c ios ios5 afnetworking

我正在使用iOS应用,并且在使用AFNetworking发出http请求时遇到了一些麻烦。

当我运行代码时,我收到错误:EXC_BAD_ACCESS(code = 2 address = 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

再次感谢!

2 个答案:

答案 0 :(得分:6)

我能够通过更改构建设置来解决这个问题。

在链接标题下更改“其他链接器标志”,单击-weak_library的条目并将其替换为-weak-lSystem

问题:Use of Blocks crashes app in iPhone Simulator 4.3/XCode 4.2 and 4.0.2

答案 1 :(得分:1)

欢迎来到Objective-C的有趣世界,@ kev_addict!

当你得到EXC_BAD_ACCESS异常时,有助于获取详细信息,以查看违规呼叫的堆栈跟踪情况。

在没有任何其他信息的情况下,我的直觉告诉我,您的问题在于您从阵列获取图像数据的方式。有没有理由不让这个方法采用UIImage参数?期望这个方法采用一个期望图像数据的数组似乎很奇怪 - 在第二个位置,不能少。