2010-10-13 26 views
5

Có thể xem mã chính xác được tạo bởi @synthesize không?Xem mã được tạo bởi @synthesize cho getter/setter

+0

Tôi có thể hỏi lý do bạn muốn điều này không? –

+0

Soitanly. Tôi mặc dù tôi có thể học được điều gì đó từ việc xem mã đó. – cfischer

+0

Related: http://stackoverflow.com/a/589348/412916 http://stackoverflow.com/questions/917884/ http://cocoawithlove.com/2009/10/memory-and-thread-safe-custom- property.html – Jano

Trả lời

5

Bạn có thể đọc các nguồn biên dịch Clang để xem ++ mã C mà tạo ra các phương thức getter và setter:

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

Nó khá khó hiểu nhưng đó là cách chính xác nhất nhìn thấy mã được tạo.

Bạn cũng có thể xem triển khai objc_getProperty và objc_setProperty trong Apple's runtime implementation. Trong khi không theo nghĩa đen giống như mã được tạo ra, mã này dễ đọc hơn nhiều và đưa ra một dấu hiệu rõ ràng về những gì một getter thích hợp và setter nên làm.

+0

Nếu "xóa" bao gồm có nhiều mã chết trong tệp của bạn, thì vâng. Nhưng bạn nói đúng, những thứ tốt được chôn trong đó là tốt. –

5

Chắc chắn là vậy. Chuyển đến tệp .m nơi bạn đã @synthesized thuộc tính, sau đó từ trình đơn Xây dựng, hãy chọn "Hiển thị Mã Hội". Trình biên dịch đặt thuận tiện trong công cụ như:

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

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

Oh, bạn muốn Objective-C mã? Xin lỗi, điều này được thực hiện bởi trình biên dịch và trình biên dịch đọc Mục tiêu-C, nhưng viết trong Assembly.

Các vấn đề liên quan