2010-10-13 10 views

Respuesta

5

Usted puede leer la fuente del compilador Clang para ver el código C++ que genera los métodos getter y setter:

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

es bastante críptico, pero esa es la forma más precisa de ver el código generado.

También puede consultar las implementaciones objc_getProperty y objc_setProperty en Apple's runtime implementation. Si bien no es literalmente lo mismo que el código que se genera, este código es mucho más fácil de leer y proporciona una clara indicación de lo que deben hacer un getter y un setter adecuados.

+0

Si "borrar" incluye tener un montón de código muerto en el archivo, entonces sí. Pero tienes razón, las cosas buenas están enterradas allí también. –

5

Sure it is. Vaya al archivo .m donde tiene @synthesized la propiedad, luego en el menú Generar, elija "Mostrar código de ensamblaje". El compilador pone convenientemente en cosas como:

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

Y

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

Oh, que querían Objective-C código? Lo sentimos, esto lo hace el compilador, y el compilador lee Objective-C, pero escribe en ensamblado.

Cuestiones relacionadas