是否可以查看@synthesize生成的确切代码?
答案 0 :(得分:5)
当然可以。转到。@synthesized
属性的.m文件,然后从Build菜单中选择“Show Assembly Code”。编译器方便地输入如下内容:
.align 4, 0x90
"-[Foo setStr:]":
Leh_func_begin2:
Lfunc_begin2:
....
和
.align 4, 0x90
"-[Foo answer]":
Leh_func_begin3:
Lfunc_begin3:
....
哦,你想要 Objective-C 代码?对不起,这是由编译器完成的,编译器读取 Objective-C,但在程序集中写。
答案 1 :(得分:5)
您可以阅读Clang编译器源代码以查看生成getter和setter方法的C ++代码:
http://llvm.org/svn/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp
这很神秘,但这是查看生成代码的最准确方式。
您还可以查看Apple's runtime implementation中的objc_getProperty和objc_setProperty实现。虽然与生成的代码字面上不一样,但这段代码更易于阅读,并清楚地表明了正确的getter和setter应该做什么。