Нажмите на значок слева от сообщения, он покажет путь через код, который вызывает ошибку.
Вы выпускаете что-то, [nextNode previous]
, которое вам не принадлежит. В частности, вы не распределили, не сохранили и не получили его с помощью метода, который начинается с нового или копии, поэтому вы не имеете права собственности на него и не должны его выпускать.
Также очень редко можно выпустить что-то не в вашем классе, [[nextNode previous] release]
.
Сейчас: [[self lastNode] release];
Как и выше, вы не получили право собственности на объект, который вы отпускаете.
Если lastNode
является свойством с удержанием, вы подрываете установщик, и когда позднее ему будет присвоено значение lastNode
через установщик, произойдет дополнительная разблокировка объекта и, возможно, произойдет сбой. Если это снова не свойство, это очень нестандартно для освобождения чего-то, что возвращается вызовом метода.
Любые выпуски с кодом этой формы [[self lastNode] release]
не являются стандартными, и если их избежать, будет меньше проблем с владением (удержанием / выпуском).
Вы сэкономите много времени и сил, изучив документацию по управлению памятью Apple.