2016-12-07 3 views
3

私はこのようなシングルトンの1つで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

パターンは通常どおりにあなたは、ビューコントローラを作成しますが、あなたはビューコントローラへの弱参照を作成し、ブロックそのahh..like

+0

にそれを渡し、この

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

です。私はこれについて知りません。ご協力いただきありがとうございます。それは私の問題を解決する。 –

関連する問題