2013-04-10 5 views
0

предположим, что я это сделать:Блоков блокируют мой взгляд

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; 

и это неатомное, прочное свойство.

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

Любые мысли?

+1

ли '__weak MyClass * weak_vista = перспектива,' работать? – 2013-04-10 19:09:47

+0

А, ладно, извините, я вижу. – 2013-04-10 19:17:07

+0

Но создание слабых ссылок и использование этого внутри блока должно решить проблему. –

ответ

2

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

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

__weak MyClass *weakVista = vista;  
vista.onFinish = ^{ 
    CGRect rect = weakVista.bounds; 
    // bla bla bla 
}; 
+0

ОК, я сделаю это. Благодарю. – SpaceDog

Смежные вопросы