作者在他的解释中犯了一个逻辑错误吗?

Mr_*_*sov 0 objective-c

我正在从"Objective-objective编程"作者Kochan那里学习Objective-c.第3版.在第8章"继承"中,Kochan先生对该方法给出了以下解释:

-(void) setOrigin: (XYPoint *) pt
{
if (! origin)
origin = [[XYPoint alloc] init];
origin.x = pt.x;
origin.y = pt.y;
}
Run Code Online (Sandbox Code Playgroud)

" 该方法首先测试实例变量origin是否为非零(确保您理解该测试并使用逻辑否定运算符!已使用).回想一下,所有实例变量最初都设置为零.所以当一个新的Rectangle对象被分配,其实例变量(包括origin)将被设置为零.

如果原点为零,则setOrigin:方法将分配并初始化一个新的XYPoint对象,并在原点中存储对它的引用."

有逻辑错误吗?仅当原点不为零时,"setOrigin"方法才会分配新的XYPoint对象吗?

Gre*_*ill 5

你的引述说:

如果原点为零,......

也就是说,当origin为零(nil),然后! origin真实的,一个新的XYPoint将被分配.

我不认为这里存在逻辑上的不一致.

  • @TeenDev:我总是把错误弄错,但我不经常犯同样的错误两次.:) (2认同)