我正在向“Objective-c 编程”作者 Kochan 学习 Objective-c。第 3 版。在第 8 章“继承”中,Kochan 先生对该方法进行了如下解释:
-(void) setOrigin: (XYPoint *) pt
{
if (! origin)
origin = [[XYPoint alloc] init];
origin.x = pt.x;
origin.y = pt.y;
}
"该方法首先测试实例变量 origin 是否非零(确保您了解该测试以及所使用的逻辑否定运算符 ! 的使用)。回想一下,所有实例变量最初都设置为零。所以当一个新的 Rectangle对象被分配后,它的实例变量,包括原点,将被设置为零。
如果原点为零,则 setOrigin: 方法将分配并初始化一个新的 XYPoint 对象,并将对它的引用存储在原点中。”
有没有逻辑错误?只有当原点不为零时,“setOrigin”方法才分配一个新的 XYPoint 对象?