请问TStringList的addObject的释放有关问题

请教TStringList的addObject的释放问题
ts:TStringList全局变量。

addobject一些对象(这些对象是通过调用另外对象的方法返回的)
现在有个问题很困惑,addobject执行后,应该是在ts中添加了对象实例,这些对象实例,通过一下三个方法都可以释放吗?
ts.delete(i);
或者
ts.clear;
或者
ts.free;
如果不释放,很可能造成内存泄露问题。还是必须通过别的方法释放?


------解决方案--------------------
要看是什么对象了
正常来说是要先释放(TObject(ts.Items[i]).Free)再删除,最后才是ts.free
------解决方案--------------------
for i:=0 to StringList.Count-1 do
begin
StringList.Objects[i].Free;
end;
if StringList<>nil then
FreeAndNil(StringList);
------解决方案--------------------
那三个方法只是从TStringList中删除对象实例的“引用”,是不是要手动释放对象实例要看情况。
比如: 
o := TmyClass.Create;//手动创建的对象
ts.AddObject('abc', o);
从列表删除:ts.delete(i);//此时对象o还是存在的,只不过从列表中删除了。
在某个地方可以调用o.Free来释放对象o。

如果o是会自动释放的对象,比如o:=Form1;//假设Form1是由Application.CreateForm(TForm1, Form1)创建
那么就不要o.Free了。
------解决方案--------------------
探讨
只是清除对象的引用?
也就是addobject,实际添加的是一个引用,或者说是一个指针,而实际引用的对象,释放动作,与StringList无关?