0

我正在尝试将 UIImage 保存ABRecordRef在我自己的NSCoding符合类中。据我现在所知,这UIImageNSCoding符合要求,因此我尝试使用以下解决方法NSData

- (id)initWithRecordRef:(ABRecordRef)record{
    //Getting the image
    if (ABPersonHasImageData(record)){
        CFDataRef imageData = ABPersonCopyImageData(record);
        image = [UIImage imageWithData:(NSData *) imageData];
        CFRelease(imageData);
    }


    return self;
}

     - (void)encodeWithCoder:(NSCoder *)aCoder{
            //encode NSData representation from UIImage
            tempData = UIImagePNGRepresentation(image);
            [aCoder encodeObject:tempData forKey:@"image"];
        }

    - (id)initWithCoder:(NSCoder *)aDecoder{
        //image
        tempData =          [aDecoder decodeObjectForKey:@"image"];
        image=              [UIImage imageWithData:[tempData valueForKey:@"image"]];
        [tempData release];

        return self;
    }

由于某种原因,当我尝试保存此类的实例时,程序会立即崩溃。我做错了什么,或者做得更好:我怎样才能完成我想要的?谢谢!

4

1 回答 1

1

我认为问题可能是您[tempData release]在解码器中的调用。据我所知,分配没有保留计数,因此它释放了一个不应该释放的对象。如果这不起作用,我会在每个方法中设置几个日志语句,以查看在崩溃发生之前调用了哪些语句。这将使我们更好地了解应该关注的地方

于 2011-09-14T18:06:19.537 回答