I have a method that takes a UIButton, modifies its properties and returns a UIButton. However, it doesn’t ever seem to be initialized. I’m sure I’m doing something wrong with the memory management here, but don’t exactly know how to fix it. No runtime errors occur.
It is called like so…
newGameBtn = [self customButtonFromButton:newGameBtn
withText:[NSString stringWithFormat:@"NEW GAME"]
withFontSize:22
withBorderColor:[UIColor orangeColor]
isSilent:YES];
[dashboardContainer addSubview:newGameBtn];
The method is defined as follows…
- (UIButton*) customButtonFromButton:(UIButton*)button withText:(NSString*)text withFontSize:(int)fontSize withBorderColor:(UIColor*)borderColor isSilent:(BOOL)isSilent {
button = [[[UIButton alloc] init] autorelease];
// Set properties from parameters
// Other conditional custom stuff here
return button;
}
NOTE: newGameBtn is of type UIButton* and is initialized with:
newGameBtn = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
Another option might be to subclass UIButton, but I figured I’d try to fix this since I’ve already walked down this path.
You should use
+[UIButton buttonWithType:]when creating buttons to get a properly initialized button.Most classes are not properly initialized by the default
-[NSObject init]method. So please look at the class reference, or superclass reference, for a usable initialization method.In this case you should also set a
frame.