Просто чтобы сделать одно замечание совершенно ясным:
Я пытался освободить скопированный объект, но все равно получаю предупреждение.
Вы имеете в виду, что пытались это сделать?
[posts addObject:[elements copy]];
[elements release];
Это не решает проблему и может вызвать вторую проблему.
Проблема, с которой вы начали, заключается в том, что вы пропускаете копию - объект, который вернул метод copy
, объект, который вы добавили в posts
. Эта проблема остается: Вы не выпустили копию.
Проблема, которую вы добавили, заключается в том, что вы выпускаете оригинальный объект, который может не соответствовать вашему намерению; Я не могу сказать наверняка, не увидев ваш другой код. Вы должны убедиться, что не отпустите elements
, пока он вам больше не понадобится.
Возможно, вы захотите вместо этого отправить elements
a removeAllObjects
сообщение; это будет держать объект вокруг, но опустошит его при подготовке к следующему элементу.
В несвязанной заметке вы также можете переименовать elements
, чтобы более точно отразить ее словарную природу и абстрагировать ее от XML-представления. «elements
» звучит как массив для меня. «feedItemProperties
» может быть более подходящим.