Сохранение файлов UIImage с NSCoding путем преобразования их в NSData - PullRequest
0 голосов
/ 14 сентября 2011

Я пытаюсь сохранить UIImage для ABRecordRef в моем собственном NSCoding соответствующем классе.Насколько я сейчас могу сказать, что UIImage не соответствует NSCoding, поэтому я попробовал следующий способ, используя вместо этого 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;
    }

по какой-то причинепадает, как только я пытаюсь сохранить экземпляр этого класса.Что я сделал не так или лучше: как я могу добиться того, чего хочу?Спасибо!

1 Ответ

1 голос
/ 14 сентября 2011

Я думаю, что проблема может заключаться в вашем [tempData release] вызове в декодере. Насколько я могу видеть, отсрочка отсчета при выделении отсутствует, поэтому он освобождает объект, который не должен быть освобожден. Если это не поможет, я бы настроил пару операторов журнала в каждом методе, чтобы увидеть, какие из них вызываются до возникновения сбоя. Это даст нам лучшее представление о том, где сосредоточиться

...