2010-10-13 13 views
5

Kann der genaue von @synthesize generierte Code angezeigt werden?Anzeigen des von @synthesize generierten Codes für Getter/Setter

+0

Kann ich fragen, warum Sie das wollen? –

+0

Soitanly. Ich konnte etwas aus der Anzeige dieses Codes lernen. – cfischer

+0

In Verbindung stehend: http://Stackoverflow.com/a/589348/412916 http://Stackoverflow.com/questions/917884/ http://cocoaithloth.com/2009/10/memory-and-thread-safe-custom- property.html – Jano

Antwort

5

können Sie die Clang-Compiler Quelle lesen Sie den C++ Code zu sehen, die die Getter und Setter-Methoden erzeugt:

http://llvm.org/svn/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp

Es ist ziemlich kryptisch, aber das ist die genaueste Methode erzeugt, um den Code zu sehen. Sie können auch die Implementierungen objc_getProperty und objc_setProperty unter Apple's runtime implementation betrachten. Obwohl dieser Code nicht wörtlich der Code ist, der generiert wird, ist er viel einfacher zu lesen und gibt einen klaren Hinweis darauf, was ein richtiger Getter und Setter tun sollte.

+0

Wenn "clear" enthält viele tote Code in Ihrer Datei, dann ja. Aber du hast recht, das gute Zeug ist auch dort vergraben. –

5

Sicher ist es. Wechseln Sie zur .m-Datei, in der Sie die Eigenschaft @synthesized haben, und wählen Sie dann im Menü Erstellen die Option "Assembly-Code anzeigen". Der Compiler setzt bequem in Sachen wie:

.align 4, 0x90 
"-[Foo setStr:]": 
Leh_func_begin2: 
Lfunc_begin2: 
.... 

Und

.align 4, 0x90 
"-[Foo answer]": 
Leh_func_begin3: 
Lfunc_begin3: 
.... 

Oh, Sie wollten Objective-C Code? Entschuldigung, dies wird vom Compiler erledigt, und der Compiler liest Objective-C, aber schreibt in Assembly.

Verwandte Themen