![]() |
IOS Compiler Bug ??? ARC
Hi,
ich plage mich schon länger mit einem seltsamen Problem rum wo ich auch schon mal was zu Debuginfos hier nachgefragt habe. Ich habe nun den Punkt lokalisiert, bei dem sich die App ins Nirwana verabschiedet: Function die ein Objekt zurückgibt, welches in der Funktion erzeugt wird und auch noch andere Objekt enthält: function Vectorizer.findObject(image:TBitmap):TAFSImageObje ct; .. .. obj:=TAFSImageObjet.Create(....); ..... die stelle wo es hängenbleibt ist genau: result:=obj; hier will der Comilper irgendwas freigeben und crasht dabei ? Ich habe es über die Debugausgaben ermittelt: {$IFDEF IOS} NSLog((NSStr('FOUND Obj'+obj.RefCount.ToString) As ILocalObject).GetObjectID); {$ENDIF} result:=obj; {$IFDEF IOS} NSLog((NSStr('to Result'+result.RefCount.ToString) As ILocalObject).GetObjectID); {$ENDIF} Das passiert erst beim 2'ten mal, wenn die Routine aufgerufen wird. Der 100% gleiche Code läuft aber Problemlos unter Windows und MacOS. Hat jemand ein Tipp da das den neuen Compiler mit der ARC Funktion betrifft! |
AW: IOS Compiler Bug ??? ARC
also hier ist definitiv noch ein dicker Käfer begraben :evil:
Durch um designen kann ich die Durchlaufzahl erhöhen die Objekte werden in einer List gespeichert. wenn man hier statt über eine variable als Zwischenspeicher direkt in eine list speichert, dann gehts über 30 durchläuft, bevor er an weiteren komischen stellen abschmiert ..... Er schmiert immer an den Übergängen ab, wo lokale Variablen vom Compiler freigegeben werden, also resultzuweisungen bzw. am ende von funktionen wo man keinen einfluss nehmen kann ..... |
AW: IOS Compiler Bug ??? ARC
Kannst du mal eine Mini-Projekt anhängen, wo dieser Fehler nachvollziehbar ist?
Ich vermute mal, dass du eine ungültige Instanz-Referenz über das Result reinschleust. |
AW: IOS Compiler Bug ??? ARC
Tritt der Fehler auch in Lazarus auf?
|
AW: IOS Compiler Bug ??? ARC
Ein Code-Beispiel wäre schon hilfreich.
Hast Du mal versucht, das Attribut
Delphi-Quellcode:
zu verwenden? Für erste Tests gern auch großzügiger, einschränken ließe sich das dann ja immer noch. Mit diesem Attribut unterdrückst Du, dass der Compiler etwas freigibt, bevor es anderweitig referenziert wird.
[unsafe]
Anwendungsbeispiele:
Delphi-Quellcode:
var [Unsafe] Obj1: TObject;
/// [Result: Unsafe] function GetObject: TObject; |
AW: IOS Compiler Bug ??? ARC
Danke für die Tipps, ich werde das mit unsafe mal versuchen, ansonsten mache ich mal ein Beispiel Projekt da das echte zu Komplex ist.
|
AW: IOS Compiler Bug ??? ARC
Erstmal vielen Dank, durch den massiven Einsatz von Unsafe habe ich nun alle Schutzverletzungen entfernen können.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz