Необходимы ли вызовы освобождения / сохранения в точке A, зависит от того, как вы определили свойство dialogTitle.
Если вы определили его как @property (retain), вам не нужно освобождать старое значение или сохранять новое значение, поскольку при назначении значения свойству (retain) оно автоматически сохраняется. Также, когда вы присваиваете новое значение (сохраняющему) свойству, старое значение освобождается, поэтому вам не нужно делать это тоже. Все, что вам нужно в этом случае:
detailViewController.dialogTitle = title;
Если вы определили dialogTitle как (назначить), то вам НЕОБХОДИМО выполнить освобождение / сохранение в точке A.
Что касается точки B, вам нужно освободить ее там, потому что если вы этого не сделаете, ваш объект detailViewController никогда не будет удален. Когда он выделяется / запускается, он получает счет сохранения 1. Когда вы нажимаете контроллер представления, он сохраняется (поэтому теперь имеет счет сохранения 2). Затем вы освобождаете в конце метода, и его счетчик сохранения уменьшается до 1. Затем, когда контроллер навигации, который его содержит, удаляется, он снова освобождается, его счетчик хранения возвращается к 0 и удаляется.
В качестве альтернативы освобождению detailViewController в конце метода, вы можете просто автоматически выпустить его при выделении / инициализации и удалить выпуск в конце метода. Автоматически выпуская его, вы, по сути, отмечаете его автоматическое освобождение при следующей очистке пула автоматического выпуска (что произойдет вскоре после выхода из этого метода)