Что будет если по адресу уже другая процедура?

Встал вопрос, что будет если идет такая ситуация. Этап первый - создаются классы и у всех в один список собираем адреса процедур оповещения их о каком то изменении.
Этап второй - Всем элементам списка рассылается сообщение о изменении.
Вопрос в следующем, если кто то из них уже уничтожен, что будет с ним, при попытке его вызова? Свою программу я через проверну защитить смогу, но не нарушит ли это что то другое что будет находится где раньше была процедура?
Этап второй - Всем элементам списка рассылается сообщение о изменении.
Вопрос в следующем, если кто то из них уже уничтожен, что будет с ним, при попытке его вызова? Свою программу я через проверну защитить смогу, но не нарушит ли это что то другое что будет находится где раньше была процедура?
- Код: Выделить всё
TMyClass=class
public
procedure ChangeEvent(Sender:TObject);
end;
- Код: Выделить всё
***
var
ListEvent:TList;
****
var
Item:TMyClass;
begin
Item:=TMyClass.create;
ListEvent.add(addr(item.ChangeEvent));
item.free;
end;
- Код: Выделить всё
for i:=0 to ListEvent.Count-1 do
begin
try
EventProcedure:=Items[i];
EventProcedure(self); //go
except
//что будет с новыми данными в случае возникновения этой ситуации
end;
end;