Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Деструктор класса (число прочтений - 4452 )
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Деструктор класса
01. Июня 2007 :: 09:58
Печать  
Непонятная какая-то ситуевина. Не срабатывает деструктор экземпляра класса, созданный из другого класса.

Первый класс:
Код
Выбрать все
Перем ТаблЧасть Экспорт;
Процедура Конструктор()
 ТаблЧасть=СоздатьОбъект("ВторойКласс");
КонецПроцедуры
Процедура Деструктор()
 Сообщить("Сюда попадаем")
 ТаблЧасть=0;
КонецПроцедуры
 



Второй класс:
Код
Выбрать все
Процедура Конструктор()
КонецПроцедуры
Процедура Деструктор()
 Сообщить("Сюда не попадаем")
КонецПроцедуры
 

  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Деструктор класса
Ответ #1 - 01. Июня 2007 :: 10:16
Печать  
Не все сказал: ВторойКласс = наследник ТП.
При таком варианте не вызывается деструктор, а вызывается "ПриУничтожении"
Это разве нормально?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деструктор класса
Ответ #2 - 01. Июня 2007 :: 10:31
Печать  
Кстати, интересная тема, нужно доку почитать.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деструктор класса
Ответ #3 - 01. Июня 2007 :: 11:35
Печать  
Деструктор все равно должен 100% отрабатывать.
ИМХО скорее всего у тебя осталась какая-то ссылка на класс-наследник ТП.
Ищи в своем коде
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деструктор класса
Ответ #4 - 01. Июня 2007 :: 11:36
Печать  
Или дай простой тест, в котором баг 100% повторяется, тогда сможем помочь.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деструктор класса
Ответ #5 - 01. Июня 2007 :: 11:40
Печать  
Важное замечание:
Цитата:
>> 01.06.2007 17:32:48 Dmitro wrote:
>> по идее время жизни самого контрола зависит не только от наличия ссылок в переменных модуля, а еще от времени жизни контрола как окна

давай код и/или тест
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Деструктор класса
Ответ #6 - 01. Июня 2007 :: 11:43
Печать  
А окно с ТП (сам контрол) уже уничтожено?
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Деструктор класса
Ответ #7 - 01. Июня 2007 :: 11:50
Печать  
Ща набросаю конфу - выложу
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Деструктор класса
Ответ #8 - 01. Июня 2007 :: 12:06
Печать  
Вот - попробуйте.
  

Test_006.rar ( 14 KB | Загрузки )
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Деструктор класса
Ответ #9 - 02. Июня 2007 :: 18:31
Печать  
Ну что? У кого-нибудь мысли по этому поводу появились?
  
Наверх
ICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Деструктор класса
Ответ #10 - 02. Июня 2007 :: 18:41
Печать  
ОФФ
Я заметил вместе с жарой снизилась активность, (возможно отпуска) Улыбка
Надо всё-таки ждать Артура....
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деструктор класса
Ответ #11 - 04. Июня 2007 :: 07:58
Печать  
Все просто на самом деле - нельзя создавать циклические ссылки !!
У тебя в классе Класс2  в свойстве ТаблПоле хранится ссылка на созданный объект ТП, т.е. фактически хранится ссылка на самого себя из-за след.кода
Код
Выбрать все
ТаблПоле = гФорма.СоздатьЭлементУправления(Сам(),РеквизитФормы); 



Для исправления бага достаточно просто написать
Код
Выбрать все
Процедура ПриУничтожении() Экспорт
	Сообщить("ПриУничтожении класса 2");

	ТаблПоле = 0; // ВОТ ОНО !!
КонецПроцедуры
 


т.е. удаляем циклическую ссылку, и тут же вызывается деструктор Улыбка

ЗЫ В доке 1С++ хорошо написано предупреждение о недопустимости подобных циклических ссылок Улыбка
А ТП здесь, как обычно, ни при чем Улыбка


ЗЗЫ Жара кончилась, у меня появились силы и я смог ответить Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Деструктор класса
Ответ #12 - 04. Июня 2007 :: 08:24
Печать  
Да.... Что-то не подумал об этом))) Жара, наверное подействовала
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать