首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何发布UIButton的背景图片?

如何发布UIButton的背景图片?
EN

Stack Overflow用户
提问于 2011-05-02 18:37:21
回答 2查看 1.2K关注 0票数 0

谁能告诉我如何释放图片,这是作为背景图片在UIButton中使用。我创建自定义按钮使用以下代码,但我不能释放内存的UIImage,这是设置在UIButton的背景图像。下面是我用来创建UIButton的代码

`

代码语言:javascript
运行
复制
   for (int index=0;index<10; index++)

   {            
    UIImage *image=[[UIImage alloc] initWithData:imageData];


    CGRect frame = CGRectMake(xValue, 10, 50, 50);  
    UIButton *button = [[UIButton alloc] initWithFrame:frame];

    [button addTarget:self action:@selector(onClickImgButton:)forControlEvents:UIControlEventTouchUpInside];
    [button setTag:index];      
    [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];     
    [button setImage:image forState:UIControlStateNormal];                      
    [button.layer setCornerRadius:10.0f];
    [button.layer setMasksToBounds:YES];
    [button.layer setBorderWidth:3.0f];
    [button.layer setBorderColor:[[UIColor lightGrayColor] CGColor]];

    image=nil;
    [image release];


    [horizontalScrollView addSubview:button];
    button=nil; 
    [button release];


    xValue=xValue+60;
    cx +=60;
}

`

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-02 18:41:16

首先,你混合了你的image=nil;镜像发布;

命令,则应首先释放,然后将指针设置为nil。现在,您正在向nil发送"release“,但什么也没有发生。您可以对按钮btw执行相同的操作。

现在,如果你想让图片从内存中释放出来,只要它正在被按钮使用,你就不能这么做。因此,您必须从内存中释放按钮(在本例中,通过修复释放并将指针设置为nil,并从其superview中删除按钮)或执行

代码语言:javascript
运行
复制
[button setImage:nil forState:UIControlStateNormal];

应将保留计数设置为0,并最终取消分配映像

票数 2
EN

Stack Overflow用户

发布于 2011-05-02 18:40:32

在上面的代码中,您向nil发送了release消息。通常情况下,颠倒这一点,即

代码语言:javascript
运行
复制
[image release];
image = nil;

here也犯了类似的错误。

然而,由于UIButton实例(根据UIButton.h的快速浏览)保留了图像,因此执行image = nil是错误的,即

代码语言:javascript
运行
复制
[image release];

是正确的。您目前对给定对象如何设置其属性做了一个很大的假设。

例如,想象一下当释放UIButton实例的时候会发生什么。当你很久以前就将你的图像设置为nil时,它将如何将release发送到它保留的图像中呢?该按钮发现自己保留了一个空图像。它将面临您自己遇到的相同问题--将release发送到零!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5856119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档