Я думаю, возможно, вы перезаписали выделенную память новым указателем где-то.
Я бы заменил
Article *a = [[[Article alloc] init] autorelease];
с
Article *a = [[Article alloc] init];
//some code
[a release]; //when you don't need it anymore
Это не очень хорошая практика, чтобы использовать авто-релиз много. Это может даже замедлить ваше приложение, кстати, в случае многих объектов.
И струны, как
a.title = [[[NSString alloc] initWithCString: colStr encoding:NSUTF8StringEncoding] autorelease];
Я бы заменил на
a.title = [NSString stringWithCString:colStr encoding:NSUTF8StringEncoding];
В этом случае вы также полагаетесь на пул автоматического выпуска, но это намного проще.
EDIT:
Действительно, ваше выделение «Статьи» находится в цикле do-while.
В строке [массив insertObject: a atIndex: 0]; ваш массив сохраняет объект, и он вам больше не нужен, но вы полагаетесь на авто-выпуск. Анализатор (или какой инструмент вы используете) видит, что вы поместили выделение в тело цикла, не освобождая его после каждой итерации. Таким образом, на второй итерации цикла вы перезаписываете свой объект «a», таким образом теряя старый указатель и теряя память (пул не найдет этот указатель, поскольку «a» перезаписывается). Даже если вы пройдете цикл только один раз, анализатору все равно, и вы получите предупреждение.