Администраторы Brovin Yaroslav Опубликовано 13 января, 2017 Администраторы Опубликовано 13 января, 2017 Ссылка: http://yaroslavbrovin.ru/object_life_cycle_in_delphi_part_1_windows_osx-ru/ Автор: Ярослав Бровин С появлением мобильных платформ в мире Delphi, произошли серьезные изменения в жизненном цикле объектов. Послужившие причиной многих проблем и вопросов, а как правильно кроссплатформенно удалять объекты. В этой статье детально рассматриваем жизненный цикл объектов на разных платформах и даём ответы на важные вопросы, которые могут побеспокоить даже опытных Delphi разработчиков. dnekrasov, Кирилл, rareMax и 15 других 18 Цитата
sinuke Опубликовано 14 января, 2017 Опубликовано 14 января, 2017 замечательная статья. и очень полезная, расставляющая все точки над i. спасибо. ждем продолжения для мобильных платформ ) Цитата
AngryOwl Опубликовано 14 января, 2017 Опубликовано 14 января, 2017 Очень просто и доходчиво! Методичку писать можно! ) Цитата
mixi Опубликовано 14 января, 2017 Опубликовано 14 января, 2017 Спасибо Ярослав за статью. Вы ответили на мой не заданный вопрос: как правильно в кросс-платформенной среде создавать и уничтожать экземпляры объектов, сохраняя единство кода для всех платформ. У меня предложение - может быть выделить отдельную тему для подобных статей или вопросов назвав ее - правила хорошего кода. Ибо считаю важным для программиста выработку навыка корректного использования тех или иных методов, особенно тем, кто только начинает с пониманием почему нужно так. Цитата
sinuke Опубликовано 14 января, 2017 Опубликовано 14 января, 2017 4 минуты назад, mixi сказал: Спасибо Ярослав за статью. Вы ответили на мой не заданный вопрос: как правильно в кросс-платформенной среде создавать и уничтожать экземпляры объектов, сохраняя единство кода для всех платформ. У меня предложение - может быть выделить отдельную тему для подобных статей или вопросов назвав ее - правила хорошего кода. Ибо считаю важным для программиста выработку навыка корректного использования тех или иных методов, особенно тем, кто только начинает с пониманием почему нужно так. тут еще не совсем кроссплатформа, а только Вин и МакОС. мобильные платформы в следующей части и там есть нюансы Andrey Efimov, Равиль Зарипов (ZuBy) и Kitty 3 Цитата
CodeToad Опубликовано 16 января, 2017 Опубликовано 16 января, 2017 (изменено) Спасибо , большое за статью 。 Хотелось бы только уточнить, правильно ли я понимаю, что для многоплатформенных решении FreeAndNil не совсем правильная практика, при разрушении объектов в на каких-то платформах FreeAndNil просто обнуляет ссылки。 И для правильной работы автоматической системы подсчета ссылок и гарантированного разрушения объекта лучше использовать DisposeOf .Думаю это будет во второй части но хотелось бы уточнить чтобы меньше было правок в написанном коде Изменено 16 января, 2017 пользователем CodeToad Цитата
Модераторы Равиль Зарипов (ZuBy) Опубликовано 16 января, 2017 Модераторы Опубликовано 16 января, 2017 2 часа назад, CodeToad сказал: Спасибо , большое за статью 。 Хотелось бы только уточнить, правильно ли я понимаю, что для многоплатформенных решении FreeAndNil не совсем правильная практика, при разрушении объектов в на каких-то платформах FreeAndNil просто обнуляет ссылки。 И для правильной работы автоматической системы подсчета ссылок и гарантированного разрушения объекта лучше использовать DisposeOf .Думаю это будет во второй части но хотелось бы уточнить чтобы меньше было правок в написанном коде Цитата
GASCHE Опубликовано 16 января, 2017 Опубликовано 16 января, 2017 54 минуты назад, Равиль Зарипов (ZuBy) сказал: Что значит в зависимости от типа c? c[r] := nil; // Или FreeAndNil(c[r]), в зависимости от типа c. Цитата
Администраторы Brovin Yaroslav Опубликовано 16 января, 2017 Автор Администраторы Опубликовано 16 января, 2017 47 минут назад, GASCHE сказал: Что значит в зависимости от типа c? Если c - это объект и у него определен дефолтное свойство, то его нельзя передавать, как var параметр. Компилятор не соберет такой код. Равиль Зарипов (ZuBy) 1 Цитата
ENERGY Опубликовано 5 марта, 2017 Опубликовано 5 марта, 2017 (изменено) Спасибо Ярослав! Есть еще одна статья от GunSmoker на эту тему. Там есть ряд интересных ньюансов, которые не описаны у Ярослава и о которых многие не знают. К примеру то, что DisposeOf хотя и вызывает деструктор, но не освобождает память выделенную под объект.. Изменено 5 марта, 2017 пользователем ENRGY Rusland 1 Цитата
Major Опубликовано 6 марта, 2017 Опубликовано 6 марта, 2017 Спасибо за статью! А под Android-ом как лучше удалять временно создаваемые фреймы? Цитата
Модераторы Andrey Efimov Опубликовано 6 марта, 2017 Модераторы Опубликовано 6 марта, 2017 52 минуты назад, Major сказал: Спасибо за статью! А под Android-ом как лучше удалять временно создаваемые фреймы? Например, вот так: Создаём фрейм FFrmSettings := TfrmSettings.Create(Self); FFrmSettings.Parent := Parent; Уничтожаем фрейм if FFrmSettings <> nil then begin FFrmSettings.Parent := nil; FFrmSettings.DisposeOf; FFrmSettings := nil; end; AngryOwl, Равиль Зарипов (ZuBy) и Major 3 Цитата
Администраторы Brovin Yaroslav Опубликовано 13 марта, 2017 Автор Администраторы Опубликовано 13 марта, 2017 В 06.03.2017 в 00:29, ENRGY сказал: К примеру то, что DisposeOf хотя и вызывает деструктор, но не освобождает память выделенную под объект.. Это часть из ARC. Поэтому в этой статье этот метод не рассматривается. Цитата
antarey Опубликовано 13 апреля, 2017 Опубликовано 13 апреля, 2017 А как быть с С++ - кругом в документации пишеться , что вместо Free необходимо использовать delete, но в андроиде delete не удаляет объект - тоже юзать FreeAndNil? Цитата
Модераторы Равиль Зарипов (ZuBy) Опубликовано 13 апреля, 2017 Модераторы Опубликовано 13 апреля, 2017 1 час назад, antarey сказал: А как быть с С++ - кругом в документации пишеться , что вместо Free необходимо использовать delete, но в андроиде delete не удаляет объект - тоже юзать FreeAndNil? в билдере есть умный указатель, unique_ptr, который сам чистит объекты которые больше никем не используются Но это не точно Цитата
antarey Опубликовано 13 апреля, 2017 Опубликовано 13 апреля, 2017 33 минуты назад, Равиль Зарипов (ZuBy) сказал: в билдере есть умный указатель, unique_ptr, который сам чистит объекты которые больше никем не используются Но это не точно Вот как раз об unique_ptr тоже вопрос, как умные указатели ведут себя на мобильных платформах? Для винды написано что объекты уничтожаются когда их никто не использует, или же когда объект выходит за пределы видимости - если я правильно понял - если объект локальный и внутри какого-то обработчика, то объект будет уничтожен по завершению обработчика. Но как сие на практике и для винды и мобильных платформ - вопрос к Ярославу и Ембарсадеро Цитата
Kitty Опубликовано 13 апреля, 2017 Опубликовано 13 апреля, 2017 Цитата Вот как раз об unique_ptr тоже вопрос, как умные указатели ведут себя на мобильных платформах? Нормально ведет. Начиная с 8:17 до 12:00 минуты видео: *На слайде сказано: используйте unigue_ptr везде где возможно - Use unigue_ptr where possible. *Не используйте new/deletehttps://youtu.be/14w26ACHrII Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.