核心数据关系类型问题

时间:2011-04-05 11:30:26

标签: objective-c core-data object entity-relationship

Hia的,

假设我有一对一或一对可能的关系。 让我们说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的内容中却没有。

知道为什么吗?

编辑:

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 个答案:

答案 0 :(得分:1)

EXC_BAD_ACCESS表示您正在访问未初始化的内存;可能是一个被释放的对象。

如果mySomeClass.myBarRef = myFoo.bar;行发生崩溃,则mySomeClassmyFoo未初始化或已发布。

您应该重新阅读memory management rules

如果仍然找不到错误,请使用调试器。它会告诉你究竟哪种方法发生了错误的访问。

您可以(并且始终应该)switch on zombie support(将环境变量NSZombieEnabled设置为YES