Domanda

Non c'è precedente postale sulla differenza di @synthesize e @ dinamico.

io voglio sapere di più su dinamiche dal punto di vista di come utilizzare @dynamic solito.

Di solito si usa insieme con @dynamic NSManagedObject

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

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

In realtà non c'è sono generati getter / setter durante il tempo compilatore secondo la comprensione di @dynamic, quindi è necessario implementare il proprio getter / setter.

La mia domanda è che in questo caso NSManagedObject, qual è la realizzazione approssimativa di getter / setter in classe Super NSManagedObject?

Salvo caso di cui sopra, quanti altri casi da usare @dynamic?

Grazie,

È stato utile?

Soluzione

@dynamic indica al compilatore che si prevede di fornire la propria implementazione per la funzione di accesso (s), anche se il compilatore non può attualmente vederli. Se si omette @dynamic e non si utilizza @synthesize, una delle due cose accadrà:

  1. Se hai fornito solo la metà una funzione di accesso (ad esempio, un getter senza un setter su una proprietà readwrite), o si sta utilizzando GCC, il compilatore vi avviserà.
  2. Se stai usando Clang per compilare il codice, funzioni di accesso corretto verrà generato automaticamente per voi. (Sintetizzare-by-default non è ufficialmente supportato.)

@dynamic è quindi utile per evitare che il compilatore di fare uno di quanto sopra. Questo potrebbe anche rivelarsi utile se si implementa una proprietà in un modo molto dinamico, come con funzioni di runtime, ma questo è raramente necessaria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top