1

任何人都可以验证我的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]; 

回答

4

如果通过Interface Builder连接这三个项目,您需要释放它们。出口默认保留。 KVC(关键值编码)用于设置网点。这意味着loadFromNib将为您设置的每个插座调用setValue:withKey。这使用@property及其setter方法,但如果没有设置(如您的情况),它会默认保留该对象。

+0

我明白了,这些泄漏是否正常显示在乐器中? – iOSDevSF 2011-05-18 16:57:37

+1

编辑以提供更多细节。在我的经验仪器与KVC有问题。但其他人可能会有更好的洞察力。 – MarkPowell 2011-05-18 17:10:45

+0

谢谢马克。我已更正了代码并将其添加到我的“疑难解答”列表中 – iOSDevSF 2011-05-18 17:12:07