Отрицательные моменты в Monkey
Для того чтобы у всех сформировалось правильное представление об этом движке, надо добавить к плюсам и очевидные минусы.
Поехали:
|
Ответ: Отрицательные моменты в Monkey
Объективные и верные замечания. Хотел только немного уточнить ситуацию под Discard.
Этот метод нужно использовать только тогда, когда вы больше не планируете использовать высвобождаемый ресурс, совсем. Т.к. в противном случае, при обращении к изображению ссылающемуся на ресурс, который был высвобожден из памяти вы получите ошибку. Именно поэтому не всегда удобно и практично добавлять этот метод в деструктор. Лучше, чтобы этим занимался менеджер ресурсов Например: Код:
Local myImage:image = LoadImage("someimage.jpg") Код:
Local myImage:image = LoadImage("someimage.jpg") Discard помимо изображений нужно вызывать также и для звуковых файлов. Опять таки только в том случае, если больше не планируете использовать данные ресурсы. |
Ответ: Отрицательные моменты в Monkey
Ну это всё понятно, класс image был приведен как пример от Марка. На самом деле для вообще любого класса верно то что перед удалением объекта класса нужно обнулить все поля являющиеся объектами (т.е. не примитивными типами данных) включая массивы. И это явно указывает на отсутствие деструкторов как понятия.
|
Ответ: Отрицательные моменты в Monkey
UPD Цитата:
Но тут всё имхо сложнее, т.к. все платформы под которые он компилирует имеют разные имплементации по сборке и деструкторах, и наследование или перегрузка методов деструкции - её вроди нету в Monkey?. Относительно файлов - тут всё очевидно же, работа с файлами не только отличается по функциям и правам доступа на разных платформ, но и ещё хуже совсем другими принципами работы с файлами, что объединить под одним представлением будет очень сложно, скорее всего это приведёт к куче кривых дополнений по конверсиям и т.п. например в бинарный вид, и ещё чего похуже.. |
Ответ: Отрицательные моменты в Monkey
Цитата:
|
Ответ: Отрицательные моменты в Monkey
|
Ответ: Отрицательные моменты в Monkey
Какой сборщик? В каждом таргете тупо юзается свой сборщик вот и всё.
Пишем на мартышке - js|as|c#|c++,gcc в уме. |
Ответ: Отрицательные моменты в Monkey
Цитата:
|
Ответ: Отрицательные моменты в Monkey
Цитата:
Код:
a = Null Код:
If (a <> Null) a.Destroy() |
Ответ: Отрицательные моменты в Monkey
Цитата:
А если он не проверяет связи между переменными, то он уже не совсем то и сборщик. Приведенный метод вроде бы и работает, но на самом деле порождает еще большее количество проблем. Рассмотрим, к примеру, такой случай: Есть некий глобальный assets, в котором хранятся загруженные ресурсы (дабы память не переводить дубликатами тех же изображений). Мы загружаем на старте игры в него изображения: Код:
assets.circle_png = LoadImage("circle.png") И мы делаем подобную манипуляцию: Код:
' Загружаем изображение в элемент 1: В общем, нужно или ждать пока разработчики добавят достойный сборщик мусора, или использовать текущий "полу-ручной" метод управления памятью. |
Часовой пояс GMT +4, время: 19:41. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot