Custom UIButton Memory Management in dealloc
Posted
by
ddawber
on Stack Overflow
See other posts from Stack Overflow
or by ddawber
Published on 2010-12-31T05:10:44Z
Indexed on
2010/12/31
5:54 UTC
Read the original article
Hit count: 233
I am hoping to clarify the processes going on here.
I have created a subclass of UIButton whose init method looks like this:
- (id)initWithTitle:(NSString *)title frame:(CGRect)btnFrame {
self = [UIButton buttonWithType:UIButtonTypeCustom];
[self setTitle:title forState:UIControlStateNormal];
self.frame = btnFrame;
return self;
}
In my view controller I am creating one of these buttons and adding it as a subview:
myButton = [[CustomButton alloc] initWithTitle:@"Title" frame:someFrame];
[self.view addSubview:myButton];
In the view controller's dealloc
method I log the retain count of my button:
- (void)dealloc {
NSLog(@"RC: %d", [myButton retainCount]); //RC = 2
[super dealloc];
NSLog(@"RC: %d", [myButton retainCount]); //RC = 1
}
The way I understand it, myButton is not actually retained, even though I invoked it using alloc
, because in my subclass I created an autorelease button (using buttonWithType:
).
In dealloc
, does this mean that, when dealloc is called the superview releases the button and its retain count goes down to 1? The button has not yet been autoreleased?
Or do I need to get that retain count down to zero after calling [super dealloc]?
Cheers.
© Stack Overflow or respective owner