tom*_*mmi 376 compiler-errors objective-c objective-c-blocks
我收到了一个错误
变量不可分配(缺少__block类型说明符)
就行了aPerson = participant;
.如何确保块可以访问aPerson
变量并且aPerson
可以返回变量?
Person *aPerson = nil;
[participants enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
Person *participant = (Person*)obj;
if ([participant.gender isEqualToString:@"M"]) {
aPerson = participant;
*stop = YES;
}
}];
return aPerson;
Run Code Online (Sandbox Code Playgroud)
Dev*_*shi 769
您需要使用以下代码行来解决您的问题:
__block Person *aPerson = nil;
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅本教程:块和变量
Den*_*lko 40
只是提醒我自己也犯了一个错误
__block
Run Code Online (Sandbox Code Playgroud)
声明必须在首次声明变量时完成,即块的OUTSIDE,而不是它的内部.这应该解决关于变量不在块之外保留其值的注释中提到的问题.
Ume*_*ant 18
只需使用__block
前缀来声明并在块内分配任何类型的变量.
例如:
__block Person *aPerson = nil;
__block NSString *name = nil;
Run Code Online (Sandbox Code Playgroud)
小智 10
要在块外部分配一个变量,在块之外总是使用__block说明符,那么代码应该是这样的: -
__block Person *aPerson = nil;
Run Code Online (Sandbox Code Playgroud)