要释放或不释放按钮(其内容从笔尖加载),这就是问题所在

时间:2010-06-30 21:21:46

标签: objective-c interface-builder release

我有一个非常经典的课程,其中包含按钮和标签等......:

@interface ExerciseViewController : UIViewController {
// Hardcoding for outlets to XIB file

// Outlets can be passed only as singe variables in Interface Builder.
// Therefore, we can only declare stupid variables, not arrays of buttons.

// Bid array

// Labels S,W,N,E
IBOutlet UILabel *labelSouth;
IBOutlet UILabel *labelWest;
IBOutlet UILabel *labelNorth;
IBOutlet UILabel *labelEast;

当然,所有这些属性都保留了:

@property (nonatomic, retain) IBOutlet UILabel *labelSouth;

我只想知道是否必须在我班级的dealloc方法中释放所有这些项目:

- (void)dealloc {
[super dealloc];
// Release all GUI objects;

那么,我应该拿走所有属性并向每个属性发送一个版本吗?我倾向于相信是的,但我更愿意问。

此致 Apple92

3 个答案:

答案 0 :(得分:2)

是的,如果您retain,则必须release

答案 1 :(得分:2)

如果您的班级正在保留某个对象,您将对其负责,并且必须在以后发布。这是保留/释放内存管理的基础。

请参阅Apple documentation on memory management rules

答案 2 :(得分:0)

我的理解是,在处理来自XIB文件的对象时,您要将它们附加到的属性应该是(非原子的,赋值的),并且您不应该在dealloc中释放它们。原因是XIB加载系统负责对其创建的对象进行内存管理。