发布iVar IBOutlet vs Property IBOutlet
问题描述:
任何人都可以验证我的dealloc方法是正确的吗?由于我的titleLabel和checkImageView被保留,所以我在dealloc中释放它们。但是,我不释放mainImageView,doneButton和noteLabel,因为它们在实现过程中没有保留或分配。发布iVar IBOutlet vs Property IBOutlet
@interface CheckMarkController : UIViewController <UIAlertViewDelegate> {
IBOutlet UIImageView *mainImageView;
IBOutlet UIButton *doneButton;
IBOutlet UILabel *noteLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *titleLabel;
@property (nonatomic, retain) IBOutlet UIImageView *checkImageView;
@property (nonatomic, retain) Event *event;
@property (nonatomic, retain) Workout *workout;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@end
- (void)dealloc {
//props
[titleLabel release];
[checkImageView release];
[event release];
[workout release];
[managedObjectContext release];
[super dealloc];
答
如果通过Interface Builder连接这三个项目,您需要释放它们。出口默认保留。 KVC(关键值编码)用于设置网点。这意味着loadFromNib
将为您设置的每个插座调用setValue:withKey
。这使用@property
及其setter方法,但如果没有设置(如您的情况),它会默认保留该对象。
我明白了,这些泄漏是否正常显示在乐器中? – iOSDevSF 2011-05-18 16:57:37
编辑以提供更多细节。在我的经验仪器与KVC有问题。但其他人可能会有更好的洞察力。 – MarkPowell 2011-05-18 17:10:45
谢谢马克。我已更正了代码并将其添加到我的“疑难解答”列表中 – iOSDevSF 2011-05-18 17:12:07