如果调用它的变量是本地

时间:2016-01-28 21:39:27

标签: ios objective-c objective-c-blocks weak-references

我在弱化和强化方面进行了一些讨论。我知道如果有一个保留周期,你需要首先弱化然后强化一个块。

即self(视图控制器)拥有一个拥有块(强参考)的标签,并且在块回调中有一个对self的引用。我知道他们都强烈地相互联系,因此保留周期。

但是,由于phoneviewcontroller的声明是本地的,因此我没有看到任何保留周期,因此下面会有弱化和强化。对此非常困惑。请注意,视图控制器有一个@property副本到setfinishblock。

- (void) doSomething{    
PhoneViewController *viewController = [[PhoneViewController alloc]    initWithNibName:@"xxxxx" bundle:nil];

@weakify(self)
[viewController setFinishBlock:^(UIImage *image) {
    @strongify(self)
    [Sharedmanager dosomethign:something];
}];

}

感谢。

0 个答案:

没有答案