如何在块内更改对象的值(作为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); }];