Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Cocoa - Управление памятью01 мая 2011Оглавление: 1. Cocoa 2. История Cocoa 3. Управление памятью 4. Основные фреймворки 5. Модель-представление-поведение 6. Позднее связывание 7. Объекты с богатыми возможностями 8. Реализации Одной из особенностей среды Cocoa является механизм для управления динамически выделяемой памятью. В классе NSObject, от которого порождается большинство классов Cocoa, как стандартных, так и пользовательских, для управления памятью реализован механизм подсчёта ссылок. Объекты, порождённые от NSObject отвечают на сообщения В дополнение к подсчёту ссылок, программисты могут воспользоваться автоматически высвобождаемыми пулами. Посылка объекту сообщения Автоматическая сборка мусора в Cocoa поддерживается начиная с Objective-C 2.0 при разработке в Xcode 3.0, включённом в поставку Mac OS X 10.5 Leopard. Программист теперь имеет возможность выбрать между автоматической и ручной работой с памятью. Мнения о наиболее эффективном способе управления памятью разделились. Некоторые программисты утверждают, что подсчёт ссылок лучше, так как он позволяет разработчику иметь точный контроль над тем, когда высвобождаются объекты, и при этом не требует выделения памяти вручную под каждый объект, который используется в программе, а также не вызывает задержек в работе, характерных для автоматической сборки мусора. Другие говорят, что вся эта схема бесполезна, что автоматическая сборка мусора в манере Java это наилучшее решение, так как она в значительной мере уменьшает вероятность ошибок программиста при работе с памятью. Сборка мусора в Cocoa не нарушает обратную совместимость программ, она используется только для проектов специально скомпилированных с её использованием. Также возможно совместить эти два подхода. Современные сборщики мусора часто позволяют запускать и останавливать себя посреди выполнения задачи, что даёт возможность приложению контролировать время, выделяемое на системные вызовы. Комбинирование этого подхода с автоматически высвобождаемыми по завершении цикла сообщений пулами AppKit кажется, предлагает наилучший компромисс. Подобная система была успешно реализована в GNUStep, свободно распространяемом аналоге OpenStep от GNU. Просмотров: 6960
|