Просмотр кода, сгенерированного @synthesize для getter / setter - PullRequest
5 голосов
/ 13 октября 2010

Можно ли просмотреть точный код, сгенерированный @synthesize?

Ответы [ 2 ]

5 голосов
/ 18 октября 2010

Вы можете прочитать исходный код компилятора Clang, чтобы увидеть код C ++, который генерирует методы getter и setter:

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

Это довольно загадочно, но это самый точный способ увидеть сгенерированный код.

Вы также можете посмотреть на реализации objc_getProperty и objc_setProperty в Реализация Apple во время выполнения . Хотя этот код буквально не совпадает с генерируемым кодом, его гораздо легче читать, и он дает четкое представление о том, что должен делать правильный метод получения и установки.

5 голосов
/ 13 октября 2010

Конечно, это так. Перейдите к файлу .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, но пишет в ассемблере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...