我希望创建一个类似于“TOwnedStringList”(类名是虚构的)的东西,可以按以下方式构建:
sl := TOwnedStringList.Create(Self);
sl.Sorted := True;
sl.Duplicates := dupIgnore;
sl.Add(...);
// etc...
Self
可以是一个表单等,这样所有者将自动释放StringList。我想避免自己调用sl.Free
,这可行吗?
reintroduce
指令创建吗?另外,我如何保护TOwnedStringList免受sl.Create(nil)
和显式的sl.Free
的影响? - ZigiZCreate(nil)
就可以了。这意味着没有 owner,让我来负责所有权。或者如果你不想这样,那就抛出一个异常。显式的Free
需要再考虑一下。请耐心等待。 - David HeffernanFOwner
被分配了,并且FOwner.ComponentState
不包含csDestroying
,则怎么样? - ZigiZ