Вопрос

Есть предыдущий почта О разнице @synthesize и @dynamic.

Я хочу узнать больше о динамике с точки зрения того, как обычно использовать @Dynamic.

Обычно мы используем @dynamic вместе с nsmanagedObject

// Movie.h
@interface Movie : NSManagedObject {
}
@property (retain) NSString* title;
@end

// Movie.m
@implementation Movie
@dynamic title;
@end

На самом деле не существует сгенерированного getter/setter во время компилятора в соответствии с пониманием @dynamic, поэтому необходимо реализовать свой собственный getter/setter.

Мой вопрос: в этом случае nsmanagedObject, какова грубая реализация Getter/Setter в Super Class nsmanagedObject?

За исключением случаев, сколько других случаев использовать @Dynamic?

Спасибо,

Это было полезно?

Решение

@dynamic Указывает компилятору, что вы планируете предоставить свою собственную реализацию для аксессуара (-ов), даже если компилятор не может их увидеть в настоящее время. Если вы опустите @dynamic И не используйте @synthesize, одна из двух вещей произойдет:

  1. Если вы предоставили только половину доступа (например, Getter без сеттера на readwrite свойство), или вы используете GCC, компилятор предупредит вас.
  2. Если вы используете Clang для компиляции вашего кода, вам будет автоматически сгенерироваться правильные аксессов. (Synthesize-By Default официально не поддерживается.)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top