2014-10-13 3 views
0

Мне нужно сохранить переменную внутри блока, потому что я должен передать ее методу из блока. Я не знаю, как это достичь.iOS какао сохранить переменный блок

__weak MyClass *weakSelf = self; 
[myFile addObserver:self block:^ 
{ 
     if ([[[weakSelf myFile] newerStatus] cached]) 
     { 

      [weakSelf performSelector:@selector(myMethod:) withObject:weakSelf.myFile afterDelay:5]; 
     } 

}]; 

Я попытался также сделать это, но не успех:

__block DBFile *myFileFinal; 

__weak MyClass *weakSelf = self; 
[myFile addObserver:self block:^ 
{ 
     if ([[[weakSelf myFile] newerStatus] cached]) 
     { 
      __strong MyClass *strongSelf = weakSelf; 
      myFileFinal = strongSelf.myFile; 
      [weakSelf performSelector:@selector(myMethod:) withObject:myFileFinal afterDelay:5]; 
     } 

}]; 

Как я могу сохранить «Myfile» для использования вне блока? Нужна помощь, пожалуйста. Заранее спасибо.

+0

Использование ivar недостаточно? – Imotep

+0

Извините im new in objetive c. Что такое ivar? – user3065901

+0

Вы уверены, что не устанавливаете 'myFile' нигде в другом месте? Возможно, вы хотите передать '[myFile copy]'. –

ответ

0

Я не знаю, что вы подразумеваете под «Как я могу сохранить« myFile »для использования вне блока?»

performSelector:withObject:afterDelay: сохраняет приемник и аргументы до тех пор, пока действие не будет выполнено.

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