2014-09-07 5 views
0

В моей NSViewController я использовать веб-представление, которое вызывает методы ViewControllerкакао WebView windowScriptObject сохраняя сильную ссылку

Контроллер вид регистрирует себя для ключа в windowScriptObject

- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowScriptObject forFrame:(WebFrame *)frame 
{ 
    [windowScriptObject setValue:self forKey:@"CocoaApp"]; 
} 

Проблема заключается в том , windowScriptObject сохраняет (сохраняет сильное ref) значение, и мой VC никогда не отменяет Как избежать этого (лучше всего не перемещать логику кода на дополнительный объект)?

(я считаю, вот такая же ситуация с прошивкой)

ответ

3

В коде очистки (например windowWillClose:, называют это:

[self.webView close]; 

выше очистит объект окно сценария и отпустите ссылку к вашему контроллеру вида.

+0

хорошая точка с близким методом, я решил ее однако с 3.th объектом, который сохраняет слабую ссылку на NSViewController, но сильный для объекта скрипта –

+0

Вы будете утечка 3-го объекта, но это может быть не такой большой проблемой, как утечка контроллера вида. Вызов 'close' позаботится об этом. Не могли бы вы отметить это как правильный ответ? – Mark

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