2016-12-07 66 views
3

我在這樣的單例中創建了uiviewcontroller。以編程方式創建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。我該怎麼辦?

回答

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]; 
}; 

,你通常會但然後創建一個弱引用視圖控制器並傳遞到塊

+0

ahh..like您創建的視圖控制器。我不知道這件事。謝謝你的幫助。它解決了我的問題。 –