首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocoa-Touch:内存管理

Cocoa-Touch:内存管理
EN

Stack Overflow用户
提问于 2009-10-08 17:49:20
回答 2查看 221关注 0票数 0

我正在定制一个UIPickerView的行,所以我在它的委托中实现了viewForRow方法,如下所示:

代码语言:javascript
复制
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    if (view) {
        return view;
    } else {
        NSString *s = [datePickerValues objectAtIndex:row];

        UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 44)];
        l.text = s;
        l.font = [UIFont boldSystemFontOfSize:18];
        l.textAlignment = UITextAlignmentCenter;
        l.backgroundColor = [UIColor purpleColor];

        [l autorelease];
        return l;
    }    
}

我是新来Obj-C的。

因为我是aloc/initing l,所以我也应该根据内存管理指南来释放它。然而,我也需要返回它。自动释放可以吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-08 17:50:24

是的,自动释放就在这里。

票数 10
EN

Stack Overflow用户

发布于 2009-10-08 18:53:14

我认为惯例是在alloc语句中自动释放它:

代码语言:javascript
复制
UILabel *l = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 44)] autorelease];

由于您需要对象在方法退出后仍然存在,因此您别无选择,只能使用自动释放。通常,您需要确保在调用方法中保留一个副本,否则它可能会随机释放给您。在这种情况下,pickerView会为您做这件事,所以不用担心。

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

https://stackoverflow.com/questions/1539442

复制
相关文章

相似问题

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