ios Rubbelkarteneffekt Absturz

8

Ich muss einen Kratzer für mein Spiel verwenden. Hier ist ein Beispiel Code vor Jahren.

Ссылка

Es funktioniert ganz gut, aber wenn ich es zusammen mit Navigationscontroller verwende, stürzt es ab.

Mein Projekt verwendet ARC, ich markiere die Datei als -fno-objc-arc. Hier ist der Quellcode:

Ссылка

es stürzt ab, wenn ich den View-Controller drücke, dann pop, und dann erneut eingeben.

Bearbeiten:

Wenn Sie alle in arc konvertieren und den Ansichtscontroller kennzeichnen, der die Scratch-Ansicht als -fno-objc-arc verwendet, funktioniert es. Wenn Sie stattdessen die Scratch-Ansicht als -fno-objc-arc markieren, stürzt sie erneut ab. Mein Projekt verwendet Arc und ich glaube nicht, dass ich meinen eigenen View-Controller in -fno-objc-arc konvertieren kann.

Bearbeiten 2:

Ich ändere den Initialisierungscode zu:

%Vor%

es stürzt nicht mehr ab, aber es gibt ein Speicherleck. und CGImageRelease wurde einmal in der Dealloc-Methode aufgerufen.

    
OMGPOP 08.06.2013, 05:16
quelle

3 Antworten

4

Verwenden Sie CGImageCreateCopy .

Der Grund dafür ist, dass Sie eine Freigabe an Ihre CGImageRef an Ihrer dealloc senden, aber wenn Sie das tatsächliche Objekt CGImage untersuchen, sehen Sie, dass es auf die gleiche Speicheradresse jedes Mal (ich denke, es ist ein Teil von Apples Optimierungen, also ist es genauso, als hättest du ein static UIImage -Objekt und referenziere dessen CGImage ).

Also in deinem initWithFrame: solltest du dein scratchable so bekommen:

%Vor%

PS: Sie hatten ein tatsächliches Leck mit pixels , also benötigen Sie auch ein CFRelease(pixels);

Ich habe den Code getestet, analysiert und gemessen und es scheint jetzt in Ordnung zu sein.

Hier ist auch ein Link zu dem festen Projekt (Ich habe auch einen Navigationscontroller und eine Taste gedrückt, um zu drücken / pop) - und nutzt natürlich ARC.

    
Alladinian 10.06.2013, 08:28
quelle
1

Dieser funktioniert super für mich Ссылка !

    
Slava Todavchich 05.02.2014 21:37
quelle
0

In AppDelegate.m

%Vor%

Sie sollten stattdessen ersetzen:

%Vor%     
Sakshi Singla 12.10.2015 04:32
quelle

Tags und Links