2012-12-20 12 views
6

Mam pewne problemy z niektórymi starymi przykładowymi kodami podczas korzystania z Xcode 4.5.Nie można przesłonić obiektu pobierającego za pomocą XCode 4.5

W moim kodu mam następujący właściwość określona

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

Następnie Mam następujący accessor metody:

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

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

Problem polega na tym, że Xcode rzuca wiele błędów, ponieważ nie mogą „zobaczyć” _managedObjectModel . Jeśli zmienię nazwę akcesora z managedObjectModel na managedObjectModel2, wszystko działa poprawnie. Przypuszczam, że problem jest związany z automatyczną syntezą właściwości, ale nie wiem, co powinienem zrobić, aby uniknąć problemu. Jakieś sugestie?

Odpowiedz

12

Clang nie zsyntetyzuje automatycznie zmiennej instancji, jeśli nie ma żadnych metod do wygenerowania. W tym przypadku prosiłeś o własność tylko do odczytu, więc nie ma żadnego ustawiciela i dostarczasz gettera. Możesz po prostu @synthesize managedObjectModel=_managedObjectModel lub samodzielnie zadeklarować zmienną instancji.

+0

Dzięki. To rozwiązało problem. – Huibert

+2

@Huibert, jeśli jest rozebrany, powinieneś oznaczyć odpowiedź jako poprawną. –

+0

Dzięki, Luis. Nie zdawałem sobie z tego sprawy. To było moje pierwsze pytanie, na pewno nie ostatnie. Wielka społeczność. – Huibert

Powiązane problemy