释放或不释放按钮(其内容是从笔尖加载的),这是个问题
Posted
技术标签:
【中文标题】释放或不释放按钮(其内容是从笔尖加载的),这是个问题【英文标题】:To release or not to release a button (whose content is loaded from a nib), that is the question 【发布时间】:2010-06-30 21:21:45 【问题描述】:我有一个非常经典的类,其中包含按钮和标签等...:
@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;
那么,我应该拿走我的所有财产并向他们每个人发送一份释放吗?我倾向于相信是的,但我更愿意问。
问候, 苹果92
【问题讨论】:
【参考方案1】:是的,如果你retain
,你必须release
【讨论】:
【参考方案2】:如果你的类保留了一个对象,你就要对它负责,并且必须在以后释放它。这是保留/释放内存管理的基础。
请参阅Apple documentation on memory management rules。
【讨论】:
【参考方案3】:据我了解,在使用 XIB 文件中的对象时,您要将它们附加到的属性应该是(非原子的,分配的),并且您不应该在 dealloc 中释放它们。原因是 XIB 加载系统负责它创建的对象的内存管理。
【讨论】:
以上是关于释放或不释放按钮(其内容是从笔尖加载的),这是个问题的主要内容,如果未能解决你的问题,请参考以下文章
Play framework/Netty 不释放socket