Viewing the code generated by @synthesize for getter/setter

守給你的承諾、 提交于 2019-12-01 06:08:26

You can read the Clang compiler source to see the C++ code that generates the getter and setter methods:

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

It's pretty cryptic but that's the most accurate way of seeing the code generated.

You can also look at the objc_getProperty and objc_setProperty implementations in Apple's runtime implementation. While not literally the same as the code that is generated, this code is much easier to read and gives a clear indication of what a proper getter and setter should do.

Sure it is. Go to the .m file where you've @synthesized the property, then from the Build menu, choose "Show Assembly Code". The compiler conveniently puts in stuff like:

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

And

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

Oh, you wanted Objective-C code? Sorry, this is done by the compiler, and the compiler reads Objective-C, but writes in Assembly.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!