So finden Sie Objective-C-Blöcke in Zuordnungen oder Lecks

9

Erste Frage, also halte das nicht gegen mich ...

Sowohl für Standardobjekte als auch für Unterklassen, die ich erstelle, ist es ziemlich einfach, in den Zuordnungen oder den Leaks-Instrumenten ein bestimmtes Objekt zu finden. Wenn ich eine Unterklasse von UIViewController namens ViewController sehen möchte, kann ich durch das Allocations-Instrument blättern und die Anzahl der lebenden Objekte erhöhen und verringern. Wenn das Objekt geleakt wird, listet das Leaks-Instrument es auf. Ich kann sogar nach bestimmten Objekten suchen.

Ich bin mir jedoch nicht sicher, wonach ich bei der Suche nach Objective-C-Blöcken suchen soll. Ich habe im Leaks-Instrument festgestellt, dass ein ausgelaufener Block als __NSMallocBlock auftaucht. Bei Verwendung des Zuweisungsinstruments wird jedoch keine Suche nach __NSMallocBlock angezeigt.

Irgendwelche Ideen, worauf Sie im Zuweisungsinstrument achten müssen, um Objective-C-Blöcke zu verfolgen?

Vielen Dank

    
timthetoolman 22.11.2011, 19:12
quelle

1 Antwort

3

Es scheint, zumindest ab Xcode 4.2.1, dass Blöcke (wie in (^), ich benutze Großbuchstaben / Fett für diese) im Zuweisungs-Instrument als nur allgemein angezeigt wird Malloc-Speicherblöcke (wie in Speicherbereichen, Kleinbuchstaben nicht fett für diese).

So Malloc NN Bytes wobei NN die Anzahl der für diesen Block erforderlichen Bytes ist. In der Regel Malloc 32 oder Malloc 64, je nachdem, was dieser Block eingenommen hat.

Natürlich gibt es wahrscheinlich noch viele andere Malloc-Blöcke derselben Größe. Wenn Sie nach Responsible Caller sortieren, kann Ihnen das helfen, sie herauszufiltern.

    
Firoze Lafeer 10.12.2011, 04:33
quelle