之前有类Point2D
@interface Point : NSObject
@property double x;
@property double y;
@end
然后有类Circle
@interface Circle : NSObject
@property double radius;
@property Point2D *point;
@end
那我在main函数中为什么不能这样设置Circle类的Point属性呢:
Cirle *c = [Circle new];
[c setPoint:[Point2D new]];
这样写为什么不行呢,视频重复放了好几遍都没有理解。
[Point2D new]返回的不是一个新的Point2D对象的指针么,而这个指针刚好可以当做Cirle中圆心的setter方法的参数。虽然这样执行完后c中的point属性的值是空的,但是在执行[Point2D new]的时候不是就已经分配空间(虽然分配的内存空间里是空的),并返回这个空内存空间的地址了么.也就是说如果我想要继续操作c中的point属性,我就可以通过其getter方法[c point2D]来获取已经分配在内存中的那段空的Point2D对象了,进而可以调用Point2D对象的setter方法,来设置这个Point2D对象的属性值了。代码如下:
[[c point] setX:10];
[[c point] setX:11];
那么程序运行到这里后,Circle对象c里面的Point2D属性的值就是:_x是10;_y是11了。
我不知道我这样的逻辑错误在哪里,大家可以帮我解释下么。(现在还没有编译环境,所有代码只能考YY了)
|
|