如何正确发布Objective-C包装类?

时间:2016-05-18 07:39:25

标签: delphi firemonkey

使用XCode Instruments检测泄漏我看到多个泄漏的TOCImport个对象(48个字节)。 我知道ARC负责在本机iOS(Objective C)端和Delphi端发布对象,但OCwrapper类介于两者之间。

例如,我使用此函数来简化UIImageView的创建:

function iosUIImageView(aUIImage: UIImage): UIImageView;
begin
  result := TUIImageView.Wrap(TUIImageView.Wrap(TUIImageView.OCClass.alloc).initWithImage(aUIImage));
end;

关闭应用时,会泄漏TOCImport个对象。

避免这种泄漏的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现只有放在一个函数中才会发生。调用相同的代码而不是通过函数调用似乎没有泄漏TOCImport对象:

LUIIMageView := TUIImageView.Wrap(TUIImageView.Wrap(TUIImageView.OCClass.alloc).initWithImage(aUIImage));

然后我尝试将inline添加到该函数中,并且似乎也解决了问题,至少在某些情况下。这种行为看起来不可预测,我不知道发生了什么。