На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 220 221 [222] 223 224 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    Цитата --Ins-- @
    Я для нотификации об уничтожении объекта использую нотификацию в виде вызовов методов заинтересованных объектов

    Какие красивые подпорки для соблюдения инвариантов в условиях дикой природы распоясавшегося полиморфизма :D
    Цитата Flex Ferrum @
    И именно наличие такого функционала приводит к тому, что разработчиком приходится придумывать мозговыносящие инварианты, следить за их соблюдением, дёргать FreeAndNil, надеяться на то, что разработчики используемых компонент - в достаточной степени пряморукие.
      Цитата --Ins-- @
      Чему равно b? Почему оно тоже должно стать 0? Оно так и останется 5

      Ты меня давай не путай, у вас в делфях ссылочная семантика, соответственно в примере корвина - хранят ссылки на объекты, а не значения как в С++. На Nil то ты их сравниваешь, интересно как, если это полноценные объекты?
        Цитата trainer @
        Тогда зачем проверки на nil в конструкторах/деструкторах, если это не индикатор?


        Ты разницу между "не создан" и "уничтожен" понимаешь?
          Цитата --Ins-- @
          я предпочитаю чтобы при уничтожении объекта все заинтересованные получали об этом уведомления и сами предпринимали нужные действия, которые обнулением ссылки могут не ограничиваться

          По-моему это накладней и привносит больше возможностей отстрелить кому-нибудь ногу или еще чего.
            Цитата Wound @
            Ты меня давай не путай, у вас в делфях ссылочная семантика, соответственно в примере корвина - хранят ссылки на объекты, а не значения как в С++. На Nil то ты их сравниваешь, интересно как, если это полноценные объекты?


            Ну да, а ссылка - это число, значение адреса :D Они хранят циферку, адрес объекта в памяти, а не сам объект. :D Врубайся, я подожду пока :D

            Добавлено
            Цитата korvin @
            По-моему это накладней и привносит больше возможностей отстрелить кому-нибудь ногу или еще чего.


            Нет, просто все прочее - это от непонимании разницы между объектом и ссылкой на него. Для того, для кого ссылка на объект - это эквивалент объекта - да, так проще и понятнее :D Отсюда и потребности обнулять ссылки после уничтожения и батхерт от того, что они не обнуляются волшебным образом :D Обнуление собственной ссылки - это не единственный вариант обработки заинтересованным уведомления об уничтожении объекта, например, он может удалить эту ссылку совсем, если она хранится в контейнере, может так же отписаться от его событий и т.д. и т.п. В любом случае, я предоставлю право решать что делать ему самому
            Сообщение отредактировано: --Ins-- -
              Цитата --Ins-- @
              Ну да, а ссылка - это число, значение адреса :D Они хранят циферку, адрес объекта в памяти, а не сам объект. :D Врубайся, я подожду пока :D

              Подожди. Я запутался.

              Добавлено
              Все я понял. Там же FreeAndNill зануляет только переданую переменную. Ну блин у вас и трешняк...
                Цитата Wound @
                Ну блин у вас и трешняк...


                А что, должно быть как-то иначе? Ссылка должна волшебным образом обнуляться? Это следствие отсутствия автоматической сборки мусора для объектов, в этих условиях иначе сделать нельзя никак. Ну либо как в плюсах - нессылочная семантика, но нафиг такое
                  Цитата OpenGL @
                  В предыдущих итерациях я не участвовал.

                  А я переучаствовал :D
                    Цитата --Ins-- @
                    Ты разницу между "не создан" и "уничтожен" понимаешь?
                    У нас вроде бы нет кладбищ объектов с памятниками "TObject'у от благодарных потомков", поэтому чем отличается не созданный от уничтоженного - не понимаю. И то и другое - биомасса в реакторе.
                    Сообщение отредактировано: trainer -
                      Цитата OpenGL @
                      Цитата --Ins-- @
                      Если в дельфи при вызове конструктора происходит исключение, то вызывается деструктор, чтобы освободить все то, что успело создаться в конструкторе до исключения - сборщика мусора то нет. Так вот, если на момент исключения в конструкторе что-то еще не создалось, то только в этом случае нужна проверка на nil.

                      После плюсов это кажется дикостью :)

                      Это и без плюсов дикость :)
                        Цитата --Ins-- @
                        А что, должно быть как-то иначе? Ссылка должна волшебным образом обнуляться? Это следствие отсутствия автоматической сборки мусора для объектов, в этих условиях иначе сделать нельзя никак. Ну либо как в плюсах - нессылочная семантика, но нафиг такое

                        Кстати а когда объект будет удален? Вот вызвал я FreeAndNil. Объект то уже удален? Я имею ввиду не обнулен, а именно удален физически, память очищается после FreeAndNil ?
                          Цитата Wound @
                          Я имею ввиду не обнулен, а именно удален физически, память очищается после FreeAndNil ?


                          Да, конечно
                            Цитата --Ins-- @
                            Да, конечно

                            тогда почему в примере korvin небыло AV? т.е. мы можем запросто один объект присвоить другому, и потом первый удалить с помощью FreeAndNil, а тот которому мы присвоили будет жить своей жизнью, да еще не будет занулен? И что это получается какая то кака?
                              Цитата Wound @
                              Ну блин у вас и трешняк...

                              Это не удалось им доказать за несколько серий многостраничных холиваров с портянками.

                              Добавлено
                              Цитата Wound @
                              И что это получается какая то кака?

                              Классическая висячая ссылка получается.
                                Цитата --Ins-- @
                                Кстати а когда объект будет удален?


                                Методы, помеченные как destructor работают волшебным образом. Они могут быть вызваны как методы, и как деструкторы - как методы, и как деструкторы - зависит от того, как этот вызов оформлен. Например, пусть у нас есть метод destructor Destroy, тело которого пустое. Если я напишу Obj.Destroy (или Free, который вызывает Destroy внутри себя) - это деструктор, он вызовет не только тело Destroy, но и освободит память (TObject.FreeInstance). Если же я напишу inherited Destroy в перекрытом деструкторе потомка этого класса - это вызов Destroy как обычного метода, т.е. просто будет выполнено пустое тело. А память будет освобождена уже после отработки даже моего тела Destroy
                                Сообщение отредактировано: --Ins-- -
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 220 221 [222] 223 224 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1861 ]   [ 14 queries used ]   [ Generated: 20.07.25, 19:06 GMT ]