i have this in the superview:
mySubView = [[MySubView alloc] init];
[self addSubview:mySubView];
[mySubView release];
then at some point later, in the sub view, this:
[self removeFromSuperview];
when i debug it, i notice that the dealloc for the subview is never called, even though i’m fairly sure the reference count should be 0. any ideas why this might be? thanks.
Yes, When you send removeFromSuperview, subsequently release message sent. And each call of release decrease retain count. And in case:
the result will be as you expect: after removeFromSuperview mySubView’s retain count became 0, and dealloc will be called.
but in your example there is more code behind “then at some point later” and some other object (and it is not superview) retains mySubView. You can for example log retainCount value to see where your view retained/relesed.