假设在iOS中,我们有:
在W2AppDelegate.m中:
GlobalViewController * globalVc;
-(BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
}
在SomeOtherViewController.m中:
-(void)viewDidLoad {
[super viewDidLoad];
[globalVc doSomething ^ {
[globalVc.someVariable doSomethingElse]; //这里有保留周期吗?
}];
}
这里是否存在保留周期,因为我们在该块内部强烈引用了globalVc。
globalVc->块-> globalVc
最佳答案
这里是否存在保留周期,因为我们在该块内部强烈引用了globalVc。
否。因为块仅捕获局部变量。
[globalVc doSomething^{
[globalVc.someVariable doSomethingElse]; // Is there a retain cycle here?
}];
块未捕获
globalVc
,因为globalVc
是全局变量。这里没有局部变量,因此该块不会捕获任何对象,因此该块根本不会保留任何对象。