0

我以这种方式有一个通用对象:

。H

@interface Object : NSObject{

    NSNumber *iden;
    NSString *name;
    NSString *address;
}

@property (nonatomic, retain) NSNumber *iden;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *address;

@end

.m

@implementation Object

@synthesize name;
@synthesize iden;
@synthesize address;

- (id) initWithCoder:(NSCoder *)aDecoder {
    self = [super init];

    if (self) {

        self.iden = [aDecoder decodeObjectForKey:@"iden"];
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.address = [aDecoder decodeObjectForKey:@"address"];

    }

    return self;
}

- (void) encodeWithCoder:(NSCoder *)aCoder {
    [aCoder encodeObject:self.iden forKey:@"iden"];
    [aCoder encodeObject:self.nome forKey:@"name"];
    [aCoder encodeObject:self.indirizzo forKey:@"address"];
}

- (void) dealloc{
    [super dealloc];
    [name release];
    [iden release];
    [address release];
}

@end

它工作正常,同时我有一个nsmutablearray,我在其中插入这些名为“favorite”的对象使用这个数组“favorite”我填充了一个tableview并以这种方式使用NSUserDefault保存它:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData* myClassArrayData = [NSKeyedArchiver archivedDataWithRootObject:appDelegate.favorite];
    [defaults setObject:myClassArrayData forKey:@"favorite"];

当我第二次打开我的应用程序并显示我的表格视图时,一切正常,但是当我尝试删除此表格视图的一行时,我崩溃了……原因是类对象中的 dealloc 方法。

如果我评论这些方法:

//- (void) dealloc{
//    [super dealloc];
//    [name release];
//    [iden release];
//    [address release];
//}

我没有崩溃,它工作正常,这种情况的解决方案是什么?我应该评论 dealloc 方法吗?

4

1 回答 1

4

总是,总是,总是[super dealloc] 最后调用。

在那一点上,切换到自动引用计数,这样您就不必再处理它了。

于 2013-06-24T16:06:01.653 回答