2010-10-13 12 views
5

के लिए @synthesize द्वारा उत्पन्न कोड को देखना @synthesize द्वारा उत्पन्न सटीक कोड देखना संभव है?गेटटर/सेटर

+0

क्या मैं पूछ सकता हूं कि आप यह क्यों चाहते हैं? –

+0

Soitanly। हालांकि मैं उस कोड को देखने से कुछ सीख सकता था। – cfischer

+0

संबंधित: http://stackoverflow.com/a/589348/412916 http://stackoverflow.com/questions/917884/ http://cocoawithlove.com/2009/10/memory-and-thread-safe- कस्टम- property.html – Jano

उत्तर

5

आप सी ++ कोड है कि मनुष्य और सेटर तरीके उत्पन्न करता है देखने के लिए बजना संकलक स्रोत पढ़ सकते हैं:

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

यह बहुत गुप्त, लेकिन उसमें उत्पन्न कोड को देखने का सबसे सही तरीका है।

आप Apple's runtime implementation में objc_getProperty और objc_setProperty कार्यान्वयन को भी देख सकते हैं। हालांकि शब्दशः जेनरेट किए गए कोड के समान नहीं है, यह कोड पढ़ने के लिए बहुत आसान है और उचित संकेतक और सेटर को क्या करना चाहिए इसका एक स्पष्ट संकेत देता है।

+0

यदि "स्पष्ट" में आपकी फ़ाइल में बहुत से मृत कोड शामिल हैं, तो हाँ। लेकिन आप सही हैं, अच्छी चीजें भी वहां दफन की जाती हैं। –

5

निश्चित रूप से यह है। .m फ़ाइल पर जाएं जहां आपके पास @synthesized संपत्ति है, फिर बिल्ड मेनू से, "असेंबली कोड दिखाएं" चुनें।

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

और

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

ओह, तुम ऑब्जेक्टिव-सी कोड चाहता था: संकलक सुविधा की तरह सामान में डालता है? क्षमा करें, यह संकलक द्वारा किया जाता है, और संकलक उद्देश्य-सी पढ़ता है, लेकिन विधानसभा में लिखता है।