Что, различия между @dynamic и @synthesize?

Из документов я читал, что @dynamic создает методы доступа во времени выполнения, в то время как @synthesize создаст средства доступа во время изготовления.

Таким образом позвольте мне предположить: @dynamic сохраняет некоторую память, и код сохранен меньшим в страницах памяти? или что? и что другие различия там между ними?

Был бы это быть в порядке для высказывания: "Это всегда - хорошая идея использовать @dynamic, а не @synthesize"? Я имею в виду..., если это сохраняет действительно память, почему нет?

Но я предполагаю, что @dynamic имеет некоторый недостаток по @synthesize, иначе все просто использовали бы @dynamic. Таким образом, каковы недостатки?

8
задан Peter Hosey 16 January 2010 в 07:49
поделиться

3 ответа

динамические свойства номера не становятся сгенерированными автоматически. @dynamic маркер свойств указывает к компилятору на обеспечение средства доступа и методов set так или иначе:

От Руководство Языка программирования Objective C :

@dynamic

Вы используете ключевое слово @dynamic , чтобы сказать компилятору о выполнении контракта API, подразумеваемого свойством или путем обеспечения реализаций метода непосредственно или во времени выполнения с помощью других механизмов, таких как динамическая загрузка кода или динамическая резолюция метода.

21
ответ дан 5 December 2019 в 05:34
поделиться

Нет, @Dynamic говорит, что реализации будут предоставлены во время выполнения. @synThesize говорит компилятору создать реализации для вас. Вы будете использовать @Dynamic , например, основные данные, которые генерируют реализации свойств во время выполнения. Если вы также не используете, компилятор предполагает, что вы предоставите реализации.

7
ответ дан 5 December 2019 в 05:34
поделиться

Нет, @dynamic не даст вам никаких преимуществ в отношении памяти/размеров кода

.
2
ответ дан 5 December 2019 в 05:34
поделиться