调用UIViews';s子视图属性将子视图保留计数增加1?

调用UIViews';s子视图属性将子视图保留计数增加1?,uiview,retaincount,subviews,Uiview,Retaincount,Subviews,我有以下代码: UIView *superView = [[UIView alloc] init]; UIView *subView = [[UIView alloc] init]; [superView addSubview:subView]; [subView release]; NSLog(@"retain before %i", [subView retainCount]);//prints 1 int i = superView.subviews.count ; NSLog(@"ret

我有以下代码:

UIView *superView = [[UIView alloc] init];
UIView *subView = [[UIView alloc] init];
[superView addSubview:subView];
[subView release];
NSLog(@"retain before %i", [subView retainCount]);//prints 1
int i = superView.subviews.count ;
NSLog(@"retain after %i", [subView retainCount]);//prints 2
i = superView.subviews.count ;
NSLog(@"retain odd %i", [subView retainCount]);//keeps printing 2

这是一种“预期”行为吗?。如果是,基本逻辑是什么?

不要调用重新计数。它是无用的。我对重新计数不感兴趣,但在本例中,它给出了引用计数(当它变为0时,对象被解除分配)。我的问题是,当我调用[subView removeFromSuperview]时,子视图没有被解除分配。发生这种情况是因为调用superViews.subviews增加了引用计数,从而导致内存泄漏。对象很容易自动删除(或在自动删除的不可变集合中),因此看起来会有额外的保留。在任何情况下,superView.subviews都不是泄漏源。