Я унаследовал приложение, разработанное на версии 10.6, и хочу перейти на версию 10.7. Я хотел бы соблюдать автоматический подсчет ссылок, и я запустил его. Помощник по преобразованию отправляет мне сообщение об ошибке: «[rewriter] небезопасно удалять неиспользуемое сообщение« autorelease »; его приемник может быть уничтожен немедленно» и указывает на следующий метод:
+ (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» перед возвратом?