Wenn Sie ziemlich typischen Mac-Code in einer OS X 10.5 + Umgebung schreiben, was sind die Nachteile der Garbage Collection?Soll ich Objective-C-Speicherbereinigung beim Schreiben für 10.5+ verwenden?
Bis jetzt war alles, was ich geschrieben habe, entweder 10.4 kompatibel oder auf dem iPhone, also habe ich mich ziemlich gut mit Retain/Release beschäftigt, aber jetzt arbeite ich an einem größeren Projekt, das nur 10.5 ist. Ich frage mich, ob es irgendwelche Nachteile gibt, einfach weiterzugehen und den Objective-C 2.0 Garbage Collector zu verwenden.
Was denkst du?
In der Theorie könnte GC schneller sein! Das ist der Fall, wenn das System nicht den Speicher freigeben muss, bevor das Programm beendet wird - dann erhalten Sie eine schnellere Zuweisung (nur den nächsten Teil des Heaps) und verbringen nie Zeit mit der Freigabe von Speicher. – Kornel
Ja, sicher. Aber theoretisch können Sie immer einen GC schreiben, der Ihr Gedächtnis in einer Nicht-GC-Umgebung verwaltet. ;) –
nein, ein GC kann Speicher nicht wie ein Nicht-GC-System zurückgewinnen. Es weiß nie, wann es zurückfordern soll, bis es die Sammlung tut. Es ist möglich, eine Mischung aus beidem zu haben, die aus dem Heap zugewiesen wird und freigibt, wenn sie außerhalb des Gültigkeitsbereichs liegt (ähnlich dem Verwenden von() Konstrukten), aber nicht mit "reinem" GC. – gbjbaanb