这个问题在这里已经有了答案:
Best Answer-推荐答案 strong>
__block 关键字允许您修改(读写访问)变量,这里是传输器。
如果您的方法 requestTransporter 是同步的,他将被执行并在调用结束之前执行他的完成 block 。
您也可以使用以下模式。
- (void) getTransporterNSNumber *)transporterId withCompletionBlockvoid(^)(Transporter*))completionBlock
{
if(!completionBlock)
return; //Avoid crashs.
for(Transporter *transporter in transporters)
{
if([transporter.transporterId isEqualToNumber:transporterId])
{
completionBlock(transporter);
return;
}
}
[self requestTransporter:transporterId completion:^(NSObject *entity) {
completionBlock((Transporter* )entity);
}];
}
并像这样使用它:
// transporterId is an NSNumber containing your transporter id.
[self getTransporter:transporterId withCompletionBlock:^(Transporter *transporter) {
// Execute your code using transporter object here.
}];
关于ios - 返回 __block 变量是如何工作的?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/19948511/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) |
Powered by Discuz! X3.4 |