Ich surfe durch den wunderbaren Blog von Scott Stevenson und versuche, ein grundlegendes Objective-C-Konzept zu verstehen, bei dem Delegierten die Eigenschaft "Zuweisen" gegenüber "Beibehalten" zugewiesen wird. Beachten Sie, dass beide in einer Müllsammelumgebung gleich sind. Ich beschäftige mich hauptsächlich mit einer nicht GC-basierten Umgebung (z. B. iPhone).
Direkt aus Scotts Blog:
"Das Schlüsselwort assign generiert einen Setter, der den Wert direkt der Instanzvariablen zuweist, anstatt ihn zu kopieren oder beizubehalten. Dies ist am besten für primitive Typen wie NSInteger und CGFloat oder für Objekte geeignet, die Sie nicht direkt besitzen, z. B. Delegaten."
Was bedeutet es, dass Sie das Delegatenobjekt nicht direkt besitzen? Normalerweise behalte ich meine Delegierten, denn wenn ich nicht möchte, dass sie in den Abgrund gehen, kümmert sich Retain für mich darum. Normalerweise abstrahiere ich UITableViewController von seiner jeweiligen Datenquelle und delegiere auch. Ich behalte auch dieses spezielle Objekt. Ich möchte sicherstellen, dass es nie verschwindet, damit mein UITableView immer einen Delegierten hat.
Kann jemand weiter erklären, wo / warum ich falsch liege, damit ich dieses gängige Paradigma in der Objective-C 2.0-Programmierung verstehen kann, die Zuweisungseigenschaft für Delegaten zu verwenden, anstatt sie beizubehalten?
Vielen Dank!