<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Interfaces</title>
	<atom:link href="http://www.ericksasse.com.br/interfaces/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ericksasse.com.br/interfaces/</link>
	<description>Desenvolvimento de software, tecnologia e afins.</description>
	<lastBuildDate>Tue, 07 Feb 2012 19:36:31 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Cesar Romero</title>
		<link>http://www.ericksasse.com.br/interfaces/comment-page-1/#comment-282644</link>
		<dc:creator>Cesar Romero</dc:creator>
		<pubDate>Sun, 06 Dec 2009 22:41:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.ericksasse.com.br/?p=308#comment-282644</guid>
		<description>@David

.NET não tem contagem de referência, ele tem garbage collection.</description>
		<content:encoded><![CDATA[<p>@David</p>
<p>.NET não tem contagem de referência, ele tem garbage collection.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David</title>
		<link>http://www.ericksasse.com.br/interfaces/comment-page-1/#comment-282049</link>
		<dc:creator>David</dc:creator>
		<pubDate>Thu, 19 Nov 2009 13:37:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.ericksasse.com.br/?p=308#comment-282049</guid>
		<description>&lt;a href=&quot;#comment-275628&quot; rel=&quot;nofollow&quot;&gt;@Jesrael  &lt;/a&gt; 
muito bom, tem como mostrar um exemplo em codigo de como utilizar a contagem de referencia semelhante ao .NET</description>
		<content:encoded><![CDATA[<p><a href="#comment-275628" rel="nofollow">@Jesrael  </a><br />
muito bom, tem como mostrar um exemplo em codigo de como utilizar a contagem de referencia semelhante ao .NET</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesrael</title>
		<link>http://www.ericksasse.com.br/interfaces/comment-page-1/#comment-275628</link>
		<dc:creator>Jesrael</dc:creator>
		<pubDate>Tue, 26 May 2009 11:08:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.ericksasse.com.br/?p=308#comment-275628</guid>
		<description>Ok, obrigado pela dica, funciona mesmo cara, valew....</description>
		<content:encoded><![CDATA[<p>Ok, obrigado pela dica, funciona mesmo cara, valew&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cesar Romero</title>
		<link>http://www.ericksasse.com.br/interfaces/comment-page-1/#comment-275593</link>
		<dc:creator>Cesar Romero</dc:creator>
		<pubDate>Mon, 25 May 2009 13:38:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.ericksasse.com.br/?p=308#comment-275593</guid>
		<description>Para anular a contagem de referencia, basta retornar -1 nos métodos de contagem de referência, isto já é feito desde que interfaces foram implementadas no Delphi, em TComponent.

function TExtendedObject._AddRef: Integer;
begin
  Result:= -1;
end;

function TExtendedObject._Release: Integer;
begin
  Result:= -1;
end;

Eu fiz uma outra implementação, mantendo a contagem de referência, mas que aproxima o comportamento ao do .Net, deixando para que você decida como quer que se comporte, como objeto ou como interface na utilização, e também implementei um método dispose, que verifica como o objeto está sendo tratado, para decidir se diminui a contagem de referência ou se destroy, dependendo de como ele estiver sendo utilizado no momento.</description>
		<content:encoded><![CDATA[<p>Para anular a contagem de referencia, basta retornar -1 nos métodos de contagem de referência, isto já é feito desde que interfaces foram implementadas no Delphi, em TComponent.</p>
<p>function TExtendedObject._AddRef: Integer;<br />
begin<br />
  Result:= -1;<br />
end;</p>
<p>function TExtendedObject._Release: Integer;<br />
begin<br />
  Result:= -1;<br />
end;</p>
<p>Eu fiz uma outra implementação, mantendo a contagem de referência, mas que aproxima o comportamento ao do .Net, deixando para que você decida como quer que se comporte, como objeto ou como interface na utilização, e também implementei um método dispose, que verifica como o objeto está sendo tratado, para decidir se diminui a contagem de referência ou se destroy, dependendo de como ele estiver sendo utilizado no momento.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesrael</title>
		<link>http://www.ericksasse.com.br/interfaces/comment-page-1/#comment-267139</link>
		<dc:creator>Jesrael</dc:creator>
		<pubDate>Thu, 26 Feb 2009 12:41:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.ericksasse.com.br/?p=308#comment-267139</guid>
		<description>Olá, gostei da dica, mas não entendi uma coisa, qdo se fala em &quot;anula a contagem&quot; seria o que precisamente?
Como anular a contagem?

Obrigado.</description>
		<content:encoded><![CDATA[<p>Olá, gostei da dica, mas não entendi uma coisa, qdo se fala em &#8220;anula a contagem&#8221; seria o que precisamente?<br />
Como anular a contagem?</p>
<p>Obrigado.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Erick</title>
		<link>http://www.ericksasse.com.br/interfaces/comment-page-1/#comment-463</link>
		<dc:creator>Erick</dc:creator>
		<pubDate>Mon, 20 Jun 2005 11:59:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.ericksasse.com.br/?p=308#comment-463</guid>
		<description>Interessante a dica, tentarei testá-la em breve. Obrigado!</description>
		<content:encoded><![CDATA[<p>Interessante a dica, tentarei testá-la em breve. Obrigado!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adriano Rochedo</title>
		<link>http://www.ericksasse.com.br/interfaces/comment-page-1/#comment-461</link>
		<dc:creator>Adriano Rochedo</dc:creator>
		<pubDate>Mon, 20 Jun 2005 05:30:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.ericksasse.com.br/?p=308#comment-461</guid>
		<description>Para resolver os problemas causados pela contagem de referência, eu criei uma classe basica que anula a contagem e derivo todos os objetos que utilizam interfaces desta classe. Funciona perfeitamente, a unica coisa que preciso tomar cuidado é me certificar que todas as referencias via interface a um objetos sejam nulas antes deste objeto ser destruido, pois o compilador do delphi continua chamando os metodos de incremento e decremento para todas as referencia de interfaces e as vezes ocorre que que o objeto ja foi destruido e por causa de uma interface com referencia valida perdida, ocorre um &quot;Access Violation&quot;. Para anular uma referencia via interface basta atribuir &quot;nil&quot; a ela.

Seguindo estes conselhos a coisa funciona perfeitamente. E depois que voce se acostuma a usar interfaces, voce nao quer mais saber de usar herança.

Faz uns dois anos que para  todos os meus mecanismos genéricos e &quot;frameworks&quot; eu só utilizo interfaces.</description>
		<content:encoded><![CDATA[<p>Para resolver os problemas causados pela contagem de referência, eu criei uma classe basica que anula a contagem e derivo todos os objetos que utilizam interfaces desta classe. Funciona perfeitamente, a unica coisa que preciso tomar cuidado é me certificar que todas as referencias via interface a um objetos sejam nulas antes deste objeto ser destruido, pois o compilador do delphi continua chamando os metodos de incremento e decremento para todas as referencia de interfaces e as vezes ocorre que que o objeto ja foi destruido e por causa de uma interface com referencia valida perdida, ocorre um &#8220;Access Violation&#8221;. Para anular uma referencia via interface basta atribuir &#8220;nil&#8221; a ela.</p>
<p>Seguindo estes conselhos a coisa funciona perfeitamente. E depois que voce se acostuma a usar interfaces, voce nao quer mais saber de usar herança.</p>
<p>Faz uns dois anos que para  todos os meus mecanismos genéricos e &#8220;frameworks&#8221; eu só utilizo interfaces.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

