Код, который вы опубликовали, будет пропускать память, потому что ваш alloc init возвратит ячейку с сохраненным счетчиком, равным единице. Предположительно, вызывающий код затем возвращает этот объект в cellForRowAtIndexPath , который присоединит его к UITableView и снова увеличит счет удержания (до двух). Поэтому, когда UITableView освобождает свою память, объект все равно будет иметь счетчик единиц хранения.
Если вы попытались автоматически высвободить объект в этом коде, и он вылетает, то у вас есть отдельная ошибка.