Мне сложно преобразовать код NSOperation в ARC. Мой объект операции использует блок завершения, который, в свою очередь, содержит блок GCD, который обновляет пользовательский интерфейс в основном потоке. Поскольку я ссылаюсь на свой рабочий объект изнутри собственного блока завершения, я использую указатель __weak, чтобы избежать утечки памяти. Однако указатель уже установлен на нуль к моменту моего кода.
Я сузил его до этого образца кода. Кто-нибудь знает, где я поступил не так, и верный способ выполнить это?
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" );
...
});
}];