classA{
classB objB=[[classB alloc]init];
objB.hasAnotherRef=self;
}
classB{
classA hasAnotherRef;
}
从上面的内容将classA本身分配给classB ivar hasAnotherRef?
我的问题是
classA有classB,然后classB再次有classA by objB.hasAnotherRef = self; 此行。
那么classA和classB的对象大小是多少。
我很困惑。
哪个是最大的?
答案 0 :(得分:2)
这里的关键是Objective-C对象总是指针。如果不是这个事实,两个结构的大小将是无限的(由于循环引用)。在适当的Objective-C中,类看起来像这样:
@class classA;
@class classB;
@interface classA {
classB * objB;
}
@end
@interface classB {
classA * objA;
}
@end
在这种情况下,两个类的大小都是一个指针的大小。
答案 1 :(得分:1)
使用这种伪代码无济于事。使用将编译的真实代码。
设置实例变量不会以任何方式改变对象的大小。 classA的所有实例都具有一个对象地址的存储空间。 classB的所有实例都有一个对象地址的存储空间。
该对象是什么并不重要,它可以是一百万个字符串的数组,它不会影响classA或classB实例的大小。
答案 2 :(得分:1)
我对你的问题不是很清楚,但我想你问的是对象是否在赋值时被值复制了。如果这就是你得到它,那么你的问题的答案就是当对象被分配给另一个对象时,它的大小不会增大。而是设置指向对象的指针。