destructor TControl.Destroy;
begin
Application.ControlDestroyed(Self);
if (FHostDockSite <> nil) and not (csDestroying in FHostDockSite.ComponentState) then
begin
FHostDockSite.Perform(CM_UNDOCKCLIENT, 0, Integer(Self));
SetParent(nil);
Dock(NullDockSite, BoundsRect);
FHostDockSite := nil;
end else
SetParent(nil);
FreeAndNil(FActionLink); {V}
FreeAndNil(FConstraints); {V}
FreeAndNil(FFont); {V} // - эти деятели в своем репертуаре
StrDispose(FText);
FText := nil; {V}
inherited Destroy;
end;
Здесь не понял суть правки :-( Зачем менять Free на FreeAndNil (для FFont и FConstraints)?
ОтветитьУдалитьПро это писал gunsmoker. Лучше - я не напишу.
ОтветитьУдалитьЕсть интересная статья (и последующее обсуждение) от не менее уважаемого чем GunSmoker:
ОтветитьУдалитьhttp://blogs.embarcadero.com/abauer/2010/02/16/38916
А можно "по-русски" для тех кто "американского языка" не знает? Не можете "пару строк чиркануть"?
УдалитьБолее "идиотского" "американского языка" я кстати не видел...
Удалитьhttp://programmingmindstream.blogspot.ru/2013/12/blog-post_3160.html
Удалитьlulinalex: http://programmingmindstream.blogspot.ru/2013/12/blog-post_3160.html
УдалитьXXX: Забей это у автора не то с генами
lulinalex: да?! :-) я СЧАСТЛИВ!! :-) СПАСИБО!!!
XXX: Его в комментах вежливо умыли что лучше огрести ав из за nil чем проезд по памяти из за записи в убитый объект
lulinalex: :-)
XXX: Он согласился хотя топик не снес
lulinalex: о чём gunsmoker и писал...
Borland кстати НИКОГДА "ленивой инициализацией" - не "страдал"... А ЗРЯ...
УдалитьКак я решаю проблему "ленивой инициализации" у "себя":
Удалитьif (g_Application = nil) AND not l3SystemDown then
begin
l3System.AddExitProc(FreeApp);
g_Application := l_AC.Create;
end;//g_Application = nil
Result := g_Application;
В общем - АНОНИМНЫЕ ссылки (пусть даже и на Embarcadero) не СОДЕРЖАЩИЕ собственных конмментариев и "оценочных суждений" - БУДУТ УДАЛЯТЬСЯ.
УдалитьСПАСИБО конечно!
ОтветитьУдалитьНо!
Я УЖЕ ПИСАЛ - "я ДЛЯ СЕБЯ РЕШИЛ - ПИСАТЬ FreeAndNil - ВСЕГДА". Точка.
Кстати человека профессиональней чем Аллен Бауэр ещё поискать надо. Его вклад в создание и развитие делфи трудно переоценить. Ради общего развития почитай его блог, ответы на http://stackoverflow.com. Кстати есть классная библиотечка для параллельных алгоритмов в его блоге. Хотя наверно стоило почитать его первую статью http://blogs.embarcadero.com/abauer/2010/02/05/38910. От себя добавлю, что полностью согласен с ним, к тому же концепция и ARC и сборщика мусора по сути исключают явное управление временем жизни объектов - т.е. читай использованием FreeAndNil для зануления ссылок. А это как ни крути более совершенные модели управлением памяти нежели в десктопном делфи. Сам я подхожу к использованию FreeAndNil с точки зрения достаточности. И если в VCL используется в деструкторах именно Free - то видимо это нормально работает у миллионов разработчиков и лезть туда без особой необходимости не стоит
ОтветитьУдалитьМнение человека,который стесняется своего имени и фамилии мне как бэ - неинтересно.
УдалитьКоторый ещё и "тыкает" к тому же.
УдалитьТак по делу нечего сказать? Видимо я ошибся в тебе.
УдалитьКонстантин
Ну что же.. Еще один аноним самовыразился... Надеюсь, что кому-то в этом мире стало легче...
Удалить"Видимо я *ошибся в тебе*"
УдалитьКонстантин, душка вы моя...
Мы с вами может быть:
1. Пили водку из одного стакана? Вроде нет..
2. Программили вместе СЛОЖНУЮ систему? Вроде нет..
3. Вешали верёвки вместе по сложным скалам? И тут вроде нет...
4. Или делили последний сухарь или последний глоток воды? И тоже - не припомню...
Так чего вы мне ТЫКАЕТЕ? И чего-то ОЖИДАЕТЕ от меня? Кто вы вообще такой?
А что касается всяких "Бауэров" да и "Ников Ходжесов" - ПЛЕВАТЬ я хотел с ВЫСОКОЙ КОЛОКОЛЬНИ..
У меня у самого опыта - "могу поделиться"...
Нет чтобы что-то "умное" про TDD, UML или MDA написать.. Так нет... "давайте по 135-му разу FreeAndNil обсудим"...
Плюнуть и растереть...
Мысль понятна?
"Хочется сказать.. Приходили ко мне тут "мастера из МГТС"... ПЕРВОЕ что они мне сказали - "эй мужик - бери провод отматывай сколько тебе надо"... Так и хочется спросить - "я пил с ними" или может быть "верёвки по скалам вешал"? ПОЧЕМУ они мне "тыкают"? Да ладно это... Я КАЖДЫЙ день езжу на маршрутке.. Если люди "до сорока", то они водителю говорят - "возьмите пожалуйста за проезд"... А молодые студенты кричат - "эй ты... возьми за проезд"... Меня почему-то это расстраивает..."
УдалитьХоспадя... вроде умный человек, а тоже несет эту чушь про совместные выпивания. Давно бы пора привыкнуть, что в сети все на "ты". И требование с пеной у рта к себе особого обращения по меньшей мере смешно.
Удалить:-) ну не хотите слушать меня - не слушайте.. но и я вряд ли вас буду слушать.. ваш комментарий - не удаляю.. равно как и "все остальные".. так сказать "в назидание потомкам"... УВАЖЕНИЕ и "прислушивание к мнению" - оно ВЗАИМНО... а не "в одни ворота".. если "какой-то Аноним", что-то неуважительно пишет.. то какой вывод? да просто с ним не надо было разговаривать с САМОГО начала.. Надеюсь - мысль понятна..
Удалить