iphone uiButton 释放

Posted

技术标签:

【中文标题】iphone uiButton 释放【英文标题】:iphone uiButton release 【发布时间】:2011-11-16 05:46:17 【问题描述】:

先生,

- (void)viewDidLoad
for (int i = 1; i <= 4; i++)

   playButton=[[UIButton alloc]initWithFrame:CGRectMake(curLocX,1.0,45,kScrollObjHeight)];
    [playButton   setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal];
    [playButton addTarget:self  action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside];
  curLocX+=100;
   

我已经在 viewDidUnload 和 dealloc 中释放了 playButton 1.我创建了四个按钮,但我只释放了一次是对还是错 2.我已经发布了viewDidUnload和dealloc它的对错 提前感谢您的宝贵建议 苏雷什.M

【问题讨论】:

【参考方案1】:

是的,如果一个对象被分配了 4 次,它应该被释放相同的计数。

顺便说一句,我不确定你想在这里做什么,在循环结束时,playButton 只会引用最后一个对象,你甚至没有将你的 playButton 作为子视图添加到任何视图中。无论如何你可以避免使用 alloc 和 user buttonWithType 方法,这个方法本身处理 UIButton 对象的分配和释放,所以你不必担心释放调用。

- (void)viewDidLoad
for (int i = 1; i <= 4; i++)

    UIButton *playButton = [UIButton buttonWithType: UIButtonTypeCustom];
    playButton.frame = CGRectMake(curLocX,1.0,45,kScrollObjHeight);
    [playButton   setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal];
    [playButton addTarget:self  action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside];
    curLocX+=100;
    [self.view addSubview: playButton]; //you might have missed this statement

【讨论】:

感谢您的宝贵回复。在它自己之前,我添加了子视图。问题只是分配。【参考方案2】:

您应该从至少一个位置 (viewDidUnload/dealloc) 中移除按钮释放,以避免为对象调用重复释放。

创建对象(在您的情况下为按钮)并一次释放所有对象是可以的。

【讨论】:

【参考方案3】:

您必须在 for 循环本身中释放按钮。

 for (int i = 1; i <= 4; i++)
    
       playButton=[[UIButton alloc]initWithFrame:CGRectMake(curLocX,1.0,45,kScrollObjHeight)];
        [playButton   setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal];
        [playButton addTarget:self  action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside];
       curLocX+=100;
       [playButton release];
       

注意: 如果您分配了“n”次对象,则必须释放该对象“n”次。

【讨论】:

以上是关于iphone uiButton 释放的主要内容,如果未能解决你的问题,请参考以下文章

Swift - UIButton

如何处理动态创建的 UIButtons

如何使 UIButton 与 UIScrollView 一起移动

UITableViewController 中的 iPhone 奇怪行为

UIButton 内的 UIImageView 具有默认填充 - 如何删除?

带有渐变、圆角、边框和阴影的 UIButton