如何在块内更改对象的值(作为parameter passing)

我有一个POST请求块在我的function之一,我想改变块内的NSString对象的值。

我意识到,通常可以只是前缀variables__block ,但在我的情况下,希望通过直接引用其参数来更改NSString对象的值。

这是一个代码框架,并附有相关的评论。

 - (void)getItemInformation:(NSString *)inputString{ //setup stuff [manager POST:@"http://foo.com/iphone_item_string/" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { //change inputString directly here inputString = (NSString *)responseObject[0]; //this of course gives an error, but I'm //unsure of how to use __block with a parameter } //foo } ]; } 

并从调用函数的一段

 currentEntryData.foo = "lorem"; NSString *retrieveString; [self getItemInformation:retrieveString]; currentEntryData.bar = retrieveString; currentEntryData.oof = "ipsum"; 

你可以使用块

 - (void)getItemInformationWithCallback:(void(^)(NSString *resultString))callback { [manager POST:@"http://foo.com/iphone_item_string/" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { // Here you call the callback block // NSString *newString = (NSString *)responseObject[0]; if (callback) callback(newString) } }]; } 

这就是你如何得到string

 [self getItemInformationWithCallback:^(NSString *resultString) { NSLog(@"%@", resultString); }];