内存管理中方法的保留与释放有关问题,详见程序

内存管理中方法的保留与释放问题,详见程序

访问方法中的保留和释放:
最好的方法设置的原则是(保持新的释放旧的,谁拥有对象谁就负责释放对象)
- (void ) setEngine : (Engine *) newEngine
{
[newEngine retain] ;  
[engine release] ;  
engine = newEngine;
}

请问,其中[newEngine retain] ;[engine release] ; 如何理解?

------解决方案--------------------
- (void) setMyField: (NSString*) newValue {
if (newValue !=myField) {
[myField release];
myField = [newValue retain];
}
}