【发布时间】:2017-09-16 00:22:53
【问题描述】:
在 Delphi/FMX 中,导入包装类和接口表示的 Objective-C 对象没有 ARC。
在处理 Objective-C 对象时,你必须调用 retain 和 在正确的点释放自己。分配一个新的 Objective-C 对象会将其引用计数初始化为 1 并调用 release 会将其降至 0 从而破坏它。 http://ridingdelphi.blogspot.de/2014/01/the-quest-to-migrate-ios-squarecam-app_3169.html
例如,我想动态创建一个 UILabel。根据上面的参考,我的代码应该是这样的(我假设我已经正确选择了零售和发布的位置):
procedure TForm1.Button1Click(Sender: TObject);
var
lbl: UILabel;
begin
lbl := TUILabel.Wrap(TUILabel.alloc.init);
lbl.retain;
...
lbl.release;
end;
它不起作用。在 Delphi/FMX 中释放包装的 Objective-C 对象的正确方法是什么?
“它不起作用”我的意思是 UILabel 没有按预期释放,并且仍然分配内存。我在 Xcode 分配工具的帮助下找到了这个。
【问题讨论】:
-
“它不起作用”我的意思是 UILabel 没有按预期释放,并且仍然分配内存。我在 Xcode 分配工具的帮助下找到了这个。
-
@TomBrunberg 当然,我已经尝试过所有这些。该对象只是卡在内存中。
-
好的,希望
iOC有更好知识的人能尽快回答。顺便说一句,您可以在评论结束后立即使用删除按钮删除不相关的 cmets(悬停评论时可见)。
标签: ios objective-c delphi automatic-ref-counting firemonkey