我正在我这样的单身人士中创建uiviewcontroller。
BrowserVC *vc = [BrowserVC loadFromNib];
vc.titleName = @"Password Management";
[vc setData:@{@"url":url.absoluteString}];
vc.successBlock = ^(NSString *urlStr){
if (![urlStr isEqualToString:url.absoluteString])
[vc dismissViewControllerAnimated:YES completion:nil];
};
然后,我得到了这个通常的错误。
在此区块中强势捕获'vc'可能会导致保留 周期。
要解决该警告,我使用了__Weak或__unsafe_unretained。现在,问题进来了。我的vc在我发起后立即被释放。我甚至无法设置titleName。我该怎么办?
答案 0 :(得分:4)
模式是这个
BrowserVC *vc = [BrowserVC loadFromNib];
vc.titleName = @"Password Management";
[vc setData:@{@"url":url.absoluteString}];
__weak __typeof(vc) weakVC = vc;
vc.successBlock = ^(NSString *urlStr){
__typeof(vc) strongVC = weakVC;
if (strongVC && ![urlStr isEqualToString:url.absoluteString])
[strongVC dismissViewControllerAnimated:YES completion:nil];
};
您可以像往常一样创建视图控制器,然后创建对视图控制器的弱引用并将其传递到块中