2016-03-30 5 views
7

Ich implementiere Windows 10 Benachrichtigung in meiner Anwendung. Jedoch unterhalb der Code (was in Ordnung läuft) offenbar ein Memo Leck von 1 TNotification Objekt und 2 Strings geben, aber ich frei, das Objekt am Ende des Blocks:Speicherverlust in Windows 10 TNotification in Delphi Seattle?

aNotification := NotificationCenter.CreateNotification; 

//-- If not assigned then must be Win 8.1 or below 
if not assigned(aNotification) then 
    exit; 

try 
    aNotification.Title := AlignMixVersionName + ' License'; 
    aNotification.AlertBody := aText; 

    NotificationCenter.PresentNotification(aNotification); 

finally 
    aNotification.Free; 
end; 

Bin ich etwas Dummes zu tun oder gibt es ein Speicherleck in der Implementierung von Benachrichtigungen?

  • Steve
+0

Welchen Wert hat 'aNotification' nach' NotificationCenter.PresentNotification (aNotification) '? –

+0

@HughJones 'aNotification' wird immer noch nach' PresentNotification' zugewiesen - so seltsam. –

+0

Ich habe Delphi vor vielen Monden gemacht und erinnere mich, Dinge auf Null gesetzt zu haben ... aNotification: = nil; – KornMuffin

Antwort

8

Es ist in der Tat ein Leck durch TNotificationCenterDelegateActivated verursacht. In seiner Create wird eine Kopie des Parameters TNotification erstellt, aber nie freigegeben.

Scheint, dass einige Entwickler, die für diesen Code verantwortlich sind, mit Nicht-ARC-Umgebungen nicht so gut umgehen können.

+0

Vielen Dank für die Bestätigung. –

+0

Wäre toll, QC das bei Emba. –

+3

Naiv könnte man erwarten, dass Emba Tests für ihre Bibliotheken hat, die Lecks ausspülen. Wie schwer könnte es sein? –