发布iVar IBOutlet与Property IBOutlet

时间:2011-05-18 16:44:39

标签: iphone objective-c cocoa-touch memory-management memory-leaks

任何人都可以验证我的dealloc方法是否正确?由于我的titleLabel和checkImageView被保留,我将在dealloc中释放它们。但是,我没有发布mainImageView,doneButton和noteLabel,因为它们在实现过程中不会被保留或分配。

@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];

1 个答案:

答案 0 :(得分:4)

如果您通过Interface Builder连接这三个项目,则需要释放它们。默认情况下保留插座。 KVC(键值编码)用于设置插座。这意味着loadFromNib会为您设置的每个商店调用setValue:withKey。这使用@property和它的setter方法,但是如果没有设置(就像你的情况一样),它默认保留对象。