Я собираюсь с уважением не соглашаться со всеми, кто ответил до сих пор, и говорит вам, чтобы не сразу увольнять сбор мусора на Mac. Все мои приложения Mac используют сбор мусора, и все новые приложения, которые я создаю, будут делать это.
В тех случаях, когда сбор мусора спас меня, огромная проблема связана с многопоточным кодом. Я считаю, что я достаточно правдоподобный, когда дело доходит до управления памятью, но крайние случаи, связанные с выпуском и аутсорсией по потокам, приводили к случайным сбоям в массивной части программного обеспечения для управления роботами, пока я не превратил его в сборку мусора. После этого все эти проблемы ушли в прошлое, что привело к значительно большей стабильности в целом (я пробыл шесть месяцев, не увидев крах одной из последних версий).
Если вы разрабатываете код, который будет использоваться совместно с Mac и iOS, определенно напишите, следуя стандартным правилам управления памятью, чтобы поддерживать ваши хорошие привычки и гарантировать, что все может быть скопировано и вставлено взад и вперед. Затем вы можете включить сборку мусора в качестве установки времени сборки в версии Mac, чтобы действовать как защитная сетка для тех случаев, когда вы пропустили утечку или перевыпуск. Вы не будете сохранять код таким образом, но это может повысить стабильность вашего приложения при его развертывании для ваших пользователей.
Однако существуют определенные рамки, такие как Core Image, которые не хорошо сочетаются с сборкой мусора, поэтому, если вы используете один из них в своем приложении, вам может потребоваться избежать GC.
Как отмечает Майк Эш в своей статье «Perform Better With Garbage Collection», тот факт, что сборщик мусора работает в фоновом потоке, может привести к небольшим улучшениям производительности в некоторых приложениях на многоядерных компьютерах Mac. Например, он может предотвратить остановки в основном потоке, которые вы иногда видите в плотных циклах, когда пулы автозаполнения сливаются или другие объекты освобождаются.
Наконец, мне нравится испытывать кроссплатформенное какао код шахты под сбором мусора, чтобы определить, где я поставил не-память, связанные очищающий код в -dealloc
(где он на самом деле не принадлежит), потому что -dealloc
больше не вызываются при вывоз мусора. Это помогает мне лучше архивировать мой код.
LLVM rocks! ........... –
С помощью C, однако, OP уже отказывается от этого мелкозернистого управления, которое дает вам написание ассемблером. ;) –
@quixoto Haha :) –