понедельник, 20 октября 2014 г.

Об "опасностях" ARC и прочих "автоматов". Пока коротко

"Список литературы" приведён тут - Об "опасностях" ARC и прочих "автоматов" (набор ссылок)

Какую проблему я хочу озвучить?

А вот какую - если из какого-либо метода возвращается интерфейс, то этот интерфейс доживает до конца вызывающего метода.

Примитивный пример приведён тут - Сокращение времени жизни интерфейса.

Приведу другой пример:

type
 IA = interface
  procedure SomeMethod;
 end;//IA
 
 IB = interface
  function GetA: IA;
 end;//IB
...
procedure SomeMethod;
var
 l_B1 : IB;
 l_B2 : IB;
begin
 l_B1 := GetB;
 l_B2 := GetB;
 ...
 l_B1.GetA.SomeMethod;
 ...
 l_B2.GetA.SomeMethod;
 ...
 // l_B1.GetA и l_B2.GetA - доживут до сюда.
end;

Какие в этом проблемы?

Напишу в следующем посте.

Комментариев нет:

Отправить комментарий