为什么将self.object设置为nil会导致崩溃

Ell*_*rez 0 null xcode objective-c dealloc

在下面的场景中,我遇到了崩溃

    if (self.videoEngine != nil)
{
    [self.videoEngine.player.view removeFromSuperview];

    [videoEngine release];
    self.videoEngine = nil;
}
Run Code Online (Sandbox Code Playgroud)

videoEngine对象是(非原子的,保留的),它是使用videoEngine = _videoEngine合成的.如果我删除self.videoEngine = nil行代码正常工作.这是正确的行为,为什么nil线会导致崩溃?self.videoEngine = nil是否仍会导致viewDidUnload函数出现问题?

Nil*_*esh 5

当你调用"self.videoEngine = nil;"时 它调用它的setter方法并在setter方法中默认释放对象然后将它设置为你提供的值,所以在这种情况下你释放你的对象一次然后setter方法试图再次释放它导致崩溃,现在如果您删除"[videoEngine release];" 那没关系,没有内存泄漏.

希望现在很清楚.