【发布时间】:2010-12-31 22:13:18
【问题描述】:
我有一个UITableView 的子类,我想在其中生成许多共享相同属性(字体、textColor、backgroundColor 等)的标签。
我决定实现这一点的最简单方法是创建一个辅助方法,该方法创建具有一些常见属性集的标签:
- (UILabel *)defaultLabelWithFrame:(CGRect)frame {
UILabel *label = [[UILabel alloc] initWithFrame:frame];
label.font = [UIFont fontWithName:@"Helvetica" size:14];
label.textColor = [UIColor colorWithWhite:128.0/255.0 alpha:1.0];
label.backgroundColor = [UIColor clearColor];
return label;
}
我使用这样的方法:
UILabel *someLabel = [self defaultLabelWithFrame:CGRectMake(0,0,100,100)];
[self addSubview:someLabel];
[someLabel release];
我在这里担心的是在方法中创建标签时它被保留,但是当我将它分配给someLabel时,它再次被保留,并且在方法中创建时我无法释放内存。
这里最好的方法是什么?
我觉得我有两个选择:
- 为默认标签类型创建 UILabel 的子类。
- 创建一个名为 defaultLabels 的 NSMutableArray 并将标签存储在此:
- (UILabel *)defaultLabelWithFrame:(CGRect)frame {
UILabel *label = [[UILabel alloc] initWithFrame:frame];
label.font = [UIFont fontWithName:@"Helvetica" size:14];
label.textColor = [UIColor colorWithWhite:128.0/255.0 alpha:1.0];
label.backgroundColor = [UIColor clearColor];
[defaultLabels addObject:label];
[labels release]; //I can release here
return [defaultLabels lastObject]; //I can release defaultLabels when done
}
我很欣赏你的想法。干杯。
【问题讨论】:
标签: iphone objective-c ios uikit uibutton