编译为macOS X时正在释放对象

时间:2014-10-27 09:12:29

标签: macos delphi osx-snow-leopard delphi-xe5

我正在为OS X重写一个应用程序(在VirtualBox中运行)。当我编译所有的对象都被释放。我是一名新手程序员,这是我的第一个mac应用程序,所以我甚至不能完全确定这是问题所在。

我已将RAD PAServer安装到OS X.在此终端中,我收到以下错误消息:

 __NSAutoreleaseNoPool(): Object 0x4237a10 of class NSPathStore2 autoreleased with no pool in place - just leaking

__NSAutoreleaseNoPool(): Object 0x664dc3c of class NSCFString autoreleased with no pool in place - just leaking

这些只是大量变种或错误消息的两个示例,它们都以__NSAutoreleaseNoPool()开头。

在编译到OS X或Win32目标平台时,RAD Studio XE-5不会给出任何错误消息。

我希望能够充分告诉你。

更新

我已在表单中添加了TCalendarEdit。当我在OS X中单击它时,程序崩溃,我在PAServer终端中收到以下运行时错误消息:

malloc: *** error for object 0x127e99d4: incorrect checksum for freed object - object was probably modified after being freed.

更新2:

似乎并非每个对象都被释放。此代码有效:

procedure TForm4.Button1Click(Sender: TObject);
begin
  label1.Text := 'bladibla';
end;

当我以这种方式重新创建TCalendarEdit功能时,一切都很好:

var
  CalendarButton: TButton;

procedure TForm4.Button7Click(Sender: TObject);
begin
  Calendar1.Visible := true;
  Calendar1.Position.X := Button7.Position.X;
  CalendarButton := Button7;
end;

procedure TForm4.Calendar1DateSelected(Sender: TObject);
begin
  if CalendarButton = Button6 then
    Button6.Text := DateToStr(Calendar1.Date);
  if CalendarButton = Button7 then
    Button7.Text := DateToStr(Calendar1.Date);

  Calendar1.Visible := false;
end;

0 个答案:

没有答案