Должен ли я копировать блок сюда?

Я понимаю, что вы должны копировать блоки, чтобы они оставались после выхода из кадра стека. Но как это применимо к блокам с выделенным стеком, используемым во вложенном блоке, как в следующем примере кода:

- doSomethingFunkyThenCall:(void(^)(int someValue))callback
{
    [[NSOperationQueue currentQueue] addOperationWithBlock:^{
        // ... do some work here, potentially nesting into further blocks ...
        callback(result);
    }];
}

Очевидно, что кадр стека doSomethingFunkyThenCall: завершится до выполнения обратного вызова, поэтому он будет должны быть скопированы. Но произойдет ли это автоматически при вызове addOperationWithBlock: или мне придется делать это вручную?

6
задан Michael Melanson 13 January 2012 в 20:08
поделиться