Ссылка на объект NSOperation в своем собственном блоке завершения с ARC

У меня проблемы с преобразованием кода NSOperation в ARC. Мой объект операции использует блок завершения, который, в свою очередь, содержит блок GCD, который обновляет пользовательский интерфейс в основном потоке. Поскольку я ссылаюсь на свой объект операции из его собственного блока завершения, я использую слабый указатель __, чтобы избежать утечки памяти. Тем не менее, указатель уже установлен на ноль к моменту запуска моего кода.

Я сузил его до этого примера кода. Кто-нибудь знает, где я ошибся, и как это сделать?

NSOperationSubclass *operation = [[NSOperationSubclass alloc] init];
__weak NSOperationSubclass *weakOperation = operation;

[operation setCompletionBlock:^{
    dispatch_async( dispatch_get_main_queue(), ^{

        // fails the check
        NSAssert( weakOperation != nil, @"pointer is nil" );

        ...
    });
}];

Ответы на вопрос(3)

Ваш ответ на вопрос