【发布时间】:2015-01-06 21:21:28
【问题描述】:
我无法访问块外的变量(显然)。我似乎无法从块中返回值。我不敢相信使用类的属性是这里的最佳实践......
// Return true when failed
- (bool)myMethod:(XCUIElement *)element {
bool fail = false;
[self waitWithTimeout:timeout
handler:^(NSError *_Nullable error){
if (error != nil) {
// How do I assign to fail here?
fail = true;
}
}
return fail;
}
我该怎么做?
【问题讨论】:
-
你能发布你的代码吗?我刚刚提交了一个答案,但再次阅读该问题,我不完全确定它是否解决了您的问题。
-
您绝对应该学习“__block”关键字和“弱自我”模式。但是,根据我对您的问题的理解,您可能能够摆脱一些相当简单的事情。块将捕获当地人。如果没有 __block,您无法重新分配本地对象,但是您可以更改现有对象。做:NSMutableString *str = [NSMutableString 字符串]; (或者是stringWithString:@“”?)在块之外。然后在块 ^{ [str appendString: @"whatever!"];这应该可以正常工作。
标签: objective-c block