Ваше управление памятью неверно.
Изменение:
NSString *table = [[NSString alloc]initWithString:@"<table>"] ;
до:
NSString *table = [[[NSString alloc]initWithString:@"<table>"] autorelease];
Затем измените:
return [table autorelease];
до:
return table;
Причина в том, что таблица, которую вы автоматически выпускаете в конце, - это таблица, построенная в предыдущей строке:
table = [table stringByAppendingString:@"</table>"];
Таким образом, вы автоматически выпускаете это дважды (stringByAppendingString:
возвращает автоматически выпущенный экземпляр), а исходную таблицу вообще не освобождает.