2016-04-09 10 views
1

Ich benutze Fauxpas meinen Code zu überprüfen, und es sagtWarum setzt man delegate nil, wenn die Instanz deallociert wird?

Wenn ein Objekt setzt sich als Delegierter oder Datenquelle eines seiner Mitglieder es, dass die Bezugnahme in seiner lösen muss - [NSObject dealloc] Methode.

Also muss ich

- (void)dealloc 
{ 
    self.tipsView.delegate = nil; 
} 

Warum schreiben? Wenn der Delegierte schwach ist, kann ich nicht die Notwendigkeit finden, ihn beim Dekompilieren auf null zu setzen.

Antwort

1

Wenn Ihr Delegierter eine schwache Referenz ist, haben Sie recht, wenn Sie ihn auf Null setzen, ergibt das keinen Sinn. Das Werkzeug ist falsch.

1

Der einzige Grund dafür ist, wenn Sie ARC nicht verwenden. Ich denke, das Tool ist entweder alt oder nicht konfiguriert, um zu wissen, dass Sie ARC verwenden.

+0

Es spielt keine Rolle, ob * Sie * ARC verwenden - es spielt nur eine Rolle, ob die Klasse, die Sie delegieren, ARC verwendet und die Variable wirklich als 'schwach' (schwache Nullreferenz) und nicht 'unsichere_unerwartet implementiert '. – newacct