如果在函数内的块中定义块,
内部块可以访问的范围。
此外,您是否必须这样做以防止保留self
(正确形成假装块):
-(void)function
{
__block id me = self;
^{
__block id me2 = me;
^{
[me2 ...];
^}
^}
}
答案 0 :(得分:1)
我有
形式的块-(void) function
{
__block bool isOK = true;
// ...
[someArray enumerateObjectsWithBlock: ^(id obj, bool** stop)
{
// ...
[someOtherArray enumerateObjectsWithBlock: ^(id obj, bool** stop)
{
// ...
isOK = false;
}];
}];
}
因此内部块可以访问外部块的范围。
为什么要阻止自己被保留?无论如何,对象必须在块的生命周期内使用。