2012-12-20 19 views
6

Ho riscontrato qualche problema con un vecchio codice di esempio quando lo utilizzo con Xcode 4.5.Impossibile eseguire l'override del getter di proprietà con XCode 4.5

Nel mio codice ho il seguente proprietà definita

@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; 

Poi ho il seguente di accesso metodo:

- (NSManagedObjectModel *)managedObjectModel { 
    if (_managedObjectModel != nil) 
    { 
     return _managedObjectModel; 
    } 

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyPrototype" 
                withExtension:@"momd"]; 
    _managedObjectModel = [[NSManagedObjectModel alloc] 
              initWithContentsOfURL:modelURL]; 
    return _managedObjectModel; 
} 

Il problema è che Xcode getta più errori in quanto non può 'vedere' _managedObjectModel . Se cambio il nome dell'accessorio da managedObjectModel a managedObjectModel2, tutto funziona correttamente. Immagino che il problema sia legato alla sintetizzazione automatica delle proprietà Xcode 4.5, ma non so cosa dovrei fare per evitare il problema. Eventuali suggerimenti?

risposta

12

Clang non sintetizza automaticamente una variabile di istanza per te se non ha metodi da generare. In questo caso, hai chiesto una proprietà readonly, quindi non c'è setter e hai fornito il getter. Puoi solo @synthesize managedObjectModel=_managedObjectModel o semplicemente dichiarare la variabile di istanza da solo.

+0

Grazie. Questo ha risolto il problema. – Huibert

+2

@Huibert, se è stato rimosso, dovresti contrassegnare la risposta come corretta –

+0

Grazie, Luis.Non l'avevo capito. Questa è stata la mia prima domanda, certamente non l'ultima. Grande comunità – Huibert

Problemi correlati