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