我有一个方法,它接受一个UIButton,修改它的属性并返回一个UIButton。但是,它似乎从未被初始化。我确定我在这里对内存管理做错了,但是不知道如何修复它。没有发生运行时错误。
它被称为......
newGameBtn = [self customButtonFromButton:newGameBtn
withText:[NSString stringWithFormat:@"NEW GAME"]
withFontSize:22
withBorderColor:[UIColor orangeColor]
isSilent:YES];
[dashboardContainer addSubview:newGameBtn];
该方法定义如下......
- (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;
}
注意:newGameBtn
的类型为UIButton *并初始化为:
newGameBtn = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
另一种选择可能是UIButton的子类,但我想我会尝试解决这个问题,因为我已经沿着这条道路前进了。
答案 0 :(得分:2)
创建按钮时,您应该使用+[UIButton buttonWithType:]
来获得正确初始化的按钮。
默认的-[NSObject init]
方法未正确初始化大多数类。因此,请查看类引用或超类引用,以获取可用的初始化方法。
在这种情况下,您还应设置frame
。
答案 1 :(得分:1)
你不用你的方法修改这个按钮,你用alloc-init创建一个全新的按钮!
如果您想更改第一个参数中的按钮,只需删除方法的第一行