cfi*_*her 5 cocoa code-generation objective-c
是否可以查看@synthesize生成的确切代码?
当然是啦.转到您拥有@synthesized该属性的.m文件,然后从"生成"菜单中选择"显示汇编代码".编译器方便地输入如下内容:
.align 4, 0x90
"-[Foo setStr:]":
Leh_func_begin2:
Lfunc_begin2:
....
Run Code Online (Sandbox Code Playgroud)
和
.align 4, 0x90
"-[Foo answer]":
Leh_func_begin3:
Lfunc_begin3:
....
Run Code Online (Sandbox Code Playgroud)
哦,你想要Objective-C代码?对不起,这是由编译器完成的,编译器读取 Objective-C,但是在Assembly中写入.
您可以阅读Clang编译器源以查看生成getter和setter方法的C++代码:
http://llvm.org/svn/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp
它非常神秘,但这是查看生成代码的最准确方式.
您还可以查看Apple的运行时实现中的objc_getProperty和objc_setProperty 实现.虽然与生成的代码字面意义不同,但此代码更易于阅读,并清楚地表明了正确的getter和setter应该做什么.
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |