Что такое @dynamic в iPad/iPhone

Я jus интересно, что означает @dynamic в objective-c и как это работает. Любая помощь пожалуйста

Ответ 1

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

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtDynamicResolution.html

содержит все детали, но в основном использование @dynamic означает, что вы обещаете предоставить реализации для обещанных методов во время выполнения.

В частности, посмотрите здесь;

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html

для примера того, как вы построили свой динамический метод и поместили его во время выполнения.

Core Data использует этот механизм для предоставления доступа. Это довольно удивительно круто, как только вы его вникнете:)

И как побочное замечание, мета-программирование в ObjC не для слабонервных, не отправляйте его, пока вы его не забудете, иначе ваши пользователи пострадают.

Ответ 2

Я цитирую книгу Apple Язык программирования Objective-C:

@dynamic

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

Здесь вы можете найти pdf-копию .

Ответ 3

Использование @dynamic требует, чтобы вы сами предоставляли методы getter/setter.

Вместо @synthesize создаются методы getter/setter.