Я унаследовал приложение, разработанное на 10.6, и хочу перейти на 10.7. Я хотел бы соблюдать автоматический подсчет ссылок, и я начал его. Помощник по конвертации отправляет мне сообщение об ошибке: «[переписывающее устройство] небезопасно удалять неиспользуемое сообщение об автозапуске; его получатель может быть немедленно уничтожен »и указывает на следующий метод:
+ (MyClass *)deserializeNode:(xmlNodePtr)cur
{
MyClass *newObject = [[MyClass new] autorelease];
[newObject deserializeAttributesFromNode:cur];
[newObject deserializeElementsFromNode:cur];
return newObject;
}
Это было бы в значительной степени нормальным стилем (за исключением некрасивого «нового» сообщения) в старой среде сохранения / выпуска, однако среда ARC этого не допускает. Это не кажется мне очень хорошим решением, но я должен создать опрос с новой директивой, как это? Это правильно вообще?
+ (MyClass *)deserializeNode:(xmlNodePtr)cur
{
MyClass *newObject;
@autorelease
{
newObject = [MyClass new];
[newObject deserializeAttributesFromNode:cur];
[newObject deserializeElementsFromNode:cur];
}
return newObject;
}
Разве это не выпустит 'newObject' до возвращения?