2016-12-07 2 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 что. Я не знаю об этом. Спасибо за вашу помощь. Он решает мою проблему. –

Смежные вопросы