Viewing the code generated by @synthesize for getter/setter

后端 未结 2 332
失恋的感觉
失恋的感觉 2021-01-13 01:35

Is it possible to view the exact code generated by @synthesize?

相关标签:
2条回答
  • 2021-01-13 02:05

    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.

    0 讨论(0)
  • 2021-01-13 02:20

    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.

    0 讨论(0)
提交回复
热议问题