Нет, выглядит хорошо. stringWithFormat
возвращает автоматически выпущенный объект - вы не владеете им, если у вас нет retain
этого, чего у вас нет, поэтому вы не должны освобождать его. Вы выделили dateFormatter
самостоятельно, поэтому действительно владеете им и должны release
.
(См. документацию по владению объектами и 8 с половиной миллиардов очень похожих вопросов SO. Это должно быть задачей номер один с, которая возникает здесь со значительным отрывом.)
Редактировать: На самом деле, глядя на ваш комментарий, здесь есть очень незначительная более тонкая проблема, хотя результат такой же (и фактически подчеркивает точку зрения о собственности).
Когда вы передаете строку в setTitle
, она может retain
сама строка, и в этом случае вызов release
может не вызвать немедленного сбоя. Тем не менее, вы все равно будете переиздавать, и в конце концов это вас укусит. Просто было бы труднее найти причину проблемы дальше по линии.
Как это происходит, setTitle
делает копию, а не сохраняет свою. Это довольно часто встречается с NSString
свойствами. Одна из причин заключается в том, что вы можете вместо этого передать NSMutableString
, а затем случайно изменить его в более поздний момент, который может испортить приемник. Принимать личную копию безопаснее. В качестве бонуса он сразу же выставляет вам чрезмерный выпуск и позволяет легко его исправить.
В любом случае, точка стоит: только когда-либо release
что-то, что вы знаете, у вас есть. Если вы только что передали его какому-то другому объекту, то ответственность за этот объект лежит на том, владеет ли он им, а не вашим.