Ermittelt zur Laufzeit, welche Instanzvariablen einer Klasse deklariert werden __weak

8

Ich schreibe ein Tool, das davon profitieren würde, zu wissen, welche Instanzvariablen einer Klasse als __weak deklariert sind.

Diese Information muss zur Laufzeit irgendwo existieren, aber gibt es irgendeine Möglichkeit, darauf zuzugreifen, dokumentiert oder anders? (Es ist für ein Werkzeug, so dass es mir nicht so wichtig ist, dass es mit Updates bricht)

    
Chris Devereux 23.07.2012, 21:46
quelle

1 Antwort

4

Hier ist eine Beispielimplementierung, die eine benutzerdefinierte Objektimplementierung verwendet, die eine rudimentäre Überprüfung durchführt, um festzustellen, ob ein iVar schwach ist oder nicht:

%Vor%

Der obige Code ist für die Verwendung mit ARC aktiviert, während der folgende benutzerdefinierte Objektcode nicht verwendet wird:

%Vor%

Dies funktioniert nur für schwache iVars. Bei einer unsafe_unretained -Variablen wird ein false-positives Ergebnis angezeigt. Meine beste Schätzung dafür ist, dass __weak -Informationen zur Laufzeit gespeichert werden, während unsafe_unretained keine Informationen enthält.

Ich hoffe, das hilft!

    
Richard J. Ross III 23.07.2012, 22:49
quelle