我们正在使用以下代码的本质来构建自定义键盘。

- (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返回一个自动释放的对象。由于您没有alloccopynewretain,因此您无需声明任何内容的所有权,也不需要(自动)发布任何内容。

将声明放入循环中不会有任何区别。但这将是很自然的地方。

关于objective-c - 构建UI时循环进行内存管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9168973/

10-09 09:59