Если вы определяете блок Objective C внутри блока внутри функции, к какой области доступа имеет доступ внутренний блок? - PullRequest
1 голос
/ 02 сентября 2011

Если кто-то определяет блок внутри блока внутри функции,

к какой области имеет доступ внутренний блок.

Кроме того, вы должны будете сделать это, чтобы предотвратить сохранение self (притворные блоки сформированы правильно):

-(void)function
{
__block id me = self;
^{
     __block id me2 = me;
    ^{
        [me2 ...];
    ^}
^}
}

1 Ответ

1 голос
/ 02 сентября 2011

У меня есть блоки вида

-(void) function
{
    __block bool isOK = true;
    // ...
    [someArray enumerateObjectsWithBlock: ^(id obj, bool** stop)
    {
        // ...
        [someOtherArray enumerateObjectsWithBlock: ^(id obj, bool** stop)
        {
           // ...
           isOK = false;
        }];
    }];
}

Итак, внутренний блок имеет доступ к области видимости внешнего блока.

Почему вы хотите предотвратить сохранение себя?В любом случае объект должен находиться вокруг на протяжении всего срока жизни блоков.

...