【发布时间】:2014-11-16 04:43:20
【问题描述】:
我有一个POST 方法,看起来像
+ (id) post {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
id response = nil;
[manager POST:@"https://mapp.com/oauth/register"
parameters:@{@"email" : @"e", @"memberExternalId" : @"m"}
success:^(AFHTTPRequestOperation *operation, id responseObject) {
response = responseObject;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// (todo) alert on failure
NSLog(@"Error: %@", error);
}];
return response;
}
我想抽象出这个方法以便我可以重用它,所以我创建了id response。
但是当我分配时
response = responseObject;
我得到编译错误
Variable is declared outside the block and is not assignable
问题
我怎样才能保留response 以便我以后可以返回它。
【问题讨论】:
-
修改块内的变量时必须使用__block说明符
-
@gabbler 是的,如果这是一个同步方法,那将是正确的。但事实并非如此,所以从这个函数返回值的整个想法是行不通的。他应该使用完成处理程序模式(很像
POST方法本身)。
标签: ios objective-c ios7 afnetworking