Блоки блокируют мой обзор

предположим, я делаю это:

MyClass *vista = [[MyClass alloc] initWithFrame:CGRectZero];

vista.onFinish = ^{
    CGRect rect = vista.bounds;
    // bla bla bla
};

тогда xcode наградит меня этой ошибкой: сильный захват перспективы в этом блоке, вероятно, приведет к циклу сохранения

Кто-то предложил объявить висту вот так

__unsafe_unretained MyClass *vista = [[MyClass alloc] initWithFrame:CGRectZero];

но проблема вот в чем. переменная Vista назначается свойству несколькими строками ниже.

self.myVista = vista;

и это неатомарное сильное свойство.

Как мне это решить? Я могу объявить временный идентификатор var, чтобы использовать его, но это кажется хромым решением.

Любая мысль?


person Duck    schedule 10.04.2013    source источник
comment
__weak MyClass *weak_vista = vista; работает?   -  person    schedule 10.04.2013
comment
А, ладно, извините, я вижу.   -  person    schedule 10.04.2013
comment
Но создание слабой ссылки и ее использование внутри блока должно решить проблему.   -  person Martin R    schedule 10.04.2013


Ответы (1)


Попробуй это:

MyClass *vista = [[MyClass alloc] initWithFrame:CGRectZero];

__weak MyClass *weakVista = vista;    
vista.onFinish = ^{
    CGRect rect = weakVista.bounds;
    // bla bla bla
};
person rmaddy    schedule 10.04.2013