Question

Il est précédent après sur la différence de @synthesize et @ dynamique.

Je veux en savoir plus sur dynamique du point de vue de l'utilisation habituellement @dynamic.

En général, nous utilisons ensemble @dynamic avec NSManagedObject

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

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

En fait il y a pas généré getter / setter pendant le temps du compilateur selon la compréhension de @dynamic, il est donc nécessaire de mettre en œuvre votre propre getter / setter.

Ma question est que dans ce cas NSManagedObject, quelle est la mise en œuvre grossière de getter / setter en super classe NSManagedObject?

Sauf cas ci-dessus, combien d'autres cas utiliser @dynamic?

Merci,

Était-ce utile?

La solution

@dynamic indique au compilateur que vous envisagez de fournir votre propre mise en œuvre pour les accesseurs (s), même si le compilateur ne peut pas les voir actuellement. Si vous omettez @dynamic et ne pas utiliser @synthesize, l'une des deux choses:

  1. Si vous avez seulement fourni une demi-accesseur (par exemple, un getter sans setter sur une propriété de readwrite), ou vous utilisez GCC, le compilateur vous avertir.
  2. Si vous utilisez Clang pour compiler votre code, accesseurs approprié sera généré automatiquement pour vous. (Synthétiser par défaut ne sont pas officiellement pris en charge.)

@dynamic est donc utile pour empêcher le compilateur de faire soit de ce qui précède. Cela peut également être utile si vous implémentez une propriété d'une manière très dynamique, comme des fonctions d'exécution, mais c'est rarement nécessaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top