我们正在使用以下代码的本质来构建自定义键盘。
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *numericButton;
for (int i = 1; i < 13; i++) {
numericButton = [UIButton buttonWithType:UIButtonTypeCustom];
int xorig, yorig;
int w = BUTTON_SIZE_W_EDG;
int tag = i;
numericButton.frame = CGRectMake(xorig, yorig + BUTTON_OFFSET, w, BUTTON_SIZE_H);
numericButton.tag = tag;
[numericButton addTarget:self
action:@selector(buttonPressed:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:numericButton];
}
}
我的问题是将数字按钮重新分配给新的UIButton是否会导致内存泄漏? buttonWithType返回一个自动释放的UIButton,但是我不确定以前的numericButton是否已与此代码一起释放。将声明放入for循环会有所区别吗?
谢谢
最佳答案
此代码不会泄漏。如您所说,buttonWithType
返回一个自动释放的对象。由于您没有alloc
,copy
,new
或retain
,因此您无需声明任何内容的所有权,也不需要(自动)发布任何内容。
将声明放入循环中不会有任何区别。但这将是很自然的地方。
关于objective-c - 构建UI时循环进行内存管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9168973/