выпуск NSKeyedUnarchiver вызывает сбой - PullRequest
0 голосов
/ 18 апреля 2011
-(id)func
{
        NSData* data = [[NSData alloc] initWithContentsOfFile:aFilePath];
    NSKeyedUnarchiver* unachiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    id object = [unachiver decodeObjectForKey:key];
    [unachiver finishDecoding];
        [unachiver release];
        [data release];
    return object;
}

при вызове этого метода, например:

id anotherObject = [self func];

затем, когда я отправляю сообщение другому объекту, это приведет к сбою, я знаю, что это дурной указатель, но я не знаю, как его решить.

1 Ответ

0 голосов
/ 18 апреля 2011

decodeObjectForKey: возвращает автоматически освобожденный объект. К тому времени, когда вы отправляете сообщение на anotherObject, оно уже освобождено. Чтобы остановить это, вы должны убедиться, что retain объект, когда вы вступаете во владение им:

id anotherObject = [[self func] retain];

Когда вы закончите работу с объектом, вы должны вызвать release, чтобы убедиться, что он освобожден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...