Поиск сообщества
Показаны результаты для тегов 'FreeAndNil'.
Найдено: 2 результата
-
Добрый день. Знаю, что на форуме есть несколько тем о том, как удалять объекты под Android и счетчике ссылок, однако использование рекомендаций оттуда мне пока не помогло. Суть вопроса: создаю свой класс type TRext =class(TRectangle) Text: TText; procedure RextMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure RextMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure RextMouseLeave(Sender: TObject); Constructor Create(AOwner: TComponent); override; Destructor Destroy; override; end; type TMyChoose = class Item1, Item2, Item3: TRext; Edits: TEdit; procedure ItemClick(Sender: TObject); procedure OnEditFocus(Sender: TObject; var ACanFocus: Boolean); Constructor Create(Form: TForm); Destructor Destroy; override; end; ..... constructor TRext.Create(AOwner: TComponent); begin inherited Create(AOwner); Text:=TText.Create(Self); Text.Parent:=Self; Text.Align:=TAlignLayOut.Client; Self.Text.OnMouseDown:=RextMouseDown; Self.Text.OnMouseUp:=RextMouseUp; Self.Text.OnMouseLeave:=RextMouseLeave; end; Destructor TRext.Destroy; begin Text.Release; Text:=nil; inherited; end; constructor TMyChoose.Create(Form: TForm); begin inherited Create; Item1:=TRextCreate(Form); Item1.Parent:=Form; Item1.Align:=tAlignLayout.MostLeft; Item2:=TRextCreate(Form); Item2.Parent:=Form; Item2.Align:=tAlignLayout.MostLeft; Item3:=TRextCreate(Form); Item3.Parent:=Form; Item3.Align:=tAlignLayout.MostLeft; Edits:=TEdit.Create(Form); Edits.Parent:=Form; Edits.Align:=tAlignLayout.MostLeft; ......... end; Destructor TMyChoose.Destroy; begin Item1.Release; Item1:=nil; Item2.Release; Item2:=nil; Item3.Release; Item3:=nil; Edits.Release; Edits:=nil; inherited; end; Под Windows все нормально работает и уничтожается. Под Android вызов Destroy у объекта типа TMyChoose не приводит ни к чему. Вместо Release и nil использовал также DisposeOf и Nil, а также FreeAndNil - результат аналогичный. Как правильно уничтожать составные объекты?
- 19 ответов
-
- Nil
- FreeAndNil
- (и ещё 4 )
-
Пустое приложение. У меня есть формы: А и B. А по кнопке создаёт и показывает B и сразу самоуничтожается: B := TB.Create(nil); B.Show; A.Free; B в свою очередь делает обратное: A := TA.Create(nil); A.Show; B.Free; На Win32 платформе в диспетчере задач память по мере открытия форм не растёт. В iOS 6.1.1 iPhone 3 проследить память я не смог, но после 5-10 открытий форм приложение падает. Вероятнее всего растёт хип (heap). Почему тогда не работает FREE?? Как правильно освободить память и уничтожить форму в iOS??? Я нашёл ответ. Если на форме есть картинки, то их нужно: Image1.Bitmap.Assign(nil);