iOS cocoa保留变量块

时间:2014-10-13 11:53:51

标签: ios cocoa variables block retain

我需要在块中保留一个变量,因为我必须将它传递给块外的方法。我不知道如何实现这一点。

__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"在街区之外使用? 需要帮助。提前致谢。

1 个答案:

答案 0 :(得分:0)

我不知道你的意思"我如何保留" myFile"在街区之外使用?"

performSelector:withObject:afterDelay:保留接收者和参数,直到执行操作。