2010-10-13 51 views
5

是否可以查看由@synthesize生成的確切代碼?查看由@synthesize for getter/setter生成的代碼

+0

我能問你爲什麼要這樣嗎? – 2010-10-13 22:10:59

+0

Soitanly。我雖然可以從查看代碼中學到一些東西。 – cfischer 2010-10-13 22:14:13

+0

相關:http://stackoverflow.com/a/589348/412916 http://stackoverflow.com/questions/917884/ http://cocoawithlove.com/2009/10/memory-and-thread-safe-custom- property.html – Jano 2011-12-20 23:30:34

回答

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實現。雖然字面上與生成的代碼不同,但該代碼更容易閱讀,並清楚地表明適當的吸氣和吸氣裝置應該做什麼。

+0

如果「清除」包括文件中有很多死碼,那麼是的。但是你是對的,好東西也埋在那裏。 – 2011-05-03 13:14:32

5

當然可以。轉到.m文件,在該文件中你有@synthesized該屬性,然後從生成菜單中選擇「顯示彙編代碼」。編譯器方便地放入東西,如:

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

而且

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

哦,你想的Objective-C代碼?對不起,這是由編譯器完成的,編譯器讀取的內容是 Objective-C,但在彙編中寫入

相關問題