dealloc上的错误例外?

时间:2011-09-30 09:52:10

标签: iphone objective-c

我遇到了一个错误的问题,我一开始找不到,但现在把它固定在[super dealloc];,但我不知道为什么会这样。

这是我的代码:

EditingViewController.h

@interface EditingViewController : UIViewController 
{

    NSManagedObject *editedObject;
    NSString *editedFieldKey;
    NSString *editedFieldName;

}


@property (nonatomic, retain) NSManagedObject *editedObject;
@property (nonatomic, retain) NSString *editedFieldKey;
@property (nonatomic, retain) NSString *editedFieldName;


- (IBAction)cancel;
- (IBAction)save;

@end

EditingViewController.m

#import "EditingViewController.h"

@implementation EditingViewController

@synthesize editedObject, editedFieldKey, editedFieldName;

#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad
{

    self.title = NSLocalizedString(editedFieldName, nil);

    // Configure the save and cancel buttons.
    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save)];
    self.navigationItem.rightBarButtonItem = saveButton;
    [saveButton release];

    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel)];
    self.navigationItem.leftBarButtonItem = cancelButton;
    [cancelButton release];
}


- (void)viewWillAppear:(BOOL)animated 
{

    [super viewWillAppear:animated];

}

- (IBAction)save 
{
    [self.navigationController popViewControllerAnimated:YES];
}


- (IBAction)cancel
{
    // Don't pass current value to the edited object, just pop.
    [self.navigationController popViewControllerAnimated:YES];
}

- (void)dealloc 
{
    [editedObject release];
    [editedFieldKey release];
    [editedFieldName release];
    //[super dealloc];
}


@end

正如您所看到的,我评论了导致错误异常的[super dealloc];,但这显然不是一个好的解决方案。

知道我做错了吗?

由于

1 个答案:

答案 0 :(得分:0)

这些属性可能从未使用过,因此它们尚未以任何方式初始化

- (void)dealloc 
{
    self.editedObject = nil;
    self.editedFieldKey = nil;
    self.editedFieldName = nil;
    [super dealloc];
}