Вопрос о типе отношения Core Data - PullRequest
0 голосов
/ 05 апреля 2011

ОВЗ,

предполагается, что у меня есть отношение один к одному или один к одному. Допустим, класс Foo имеет прямую ссылку на управляемый класс Bar.

Foo.h
Bar * bar;
@property (nonatomic, retain) Bar * bar;
Foo.m
@syntesize bar;

Я бы получил доступ к Foo следующим образом:

Foo * myFoo= [fetched result what ever];

Использование myFoo.bar.whatEverPoperty работает, но сохранение myFoo.bar в нечто вроде Bar * myBar - нет.

Есть идеи, почему?

Edit:

SomeClass.h
Bar * myBarRef;
@property (nonatomic, retain) Bar * myBarRef;
SomeClass.m
@synthesize myBarRef;

Теперь я создаю объект этого класса:

SomeClass * mySomeClass= [[SomeClass Alloc]init];

и сохраните ссылку там: mySomeClass.myBarRef = myFoo.bar; (EXC_BAD_ACCESS)

иногда он выделяет эту строку вместо вышеуказанной:

@synthesize myBarRef; (EXC_BAD_ACCESS)

Может быть проблема в ленивой загрузке? Если да, то как заставить бар загружаться с помощью foo?

1 Ответ

1 голос
/ 05 апреля 2011

EXC_BAD_ACCESS означает, что вы обращаетесь к неинициализированной памяти; вероятно, освобожденный объект.

Если сбой происходит в строке mySomeClass.myBarRef = myFoo.bar;, то mySomeClass или myFoo неинициализированы или освобождены.

Вам следует перечитать правила управления памятью .

Если вы все еще не можете найти ошибку, используйте отладчик. Он скажет вам, в каком методе происходит неправильный доступ.

Вы можете (и всегда должны) также включить поддержку зомби (установить переменную окружения NSZombieEnabled на YES.

...