Я должен выпустить возвращенный объект NSError?

FusionCharts является очень хорошим продуктом построения диаграммы. Работы хорошо с RoR. Их поддержка и форумы хороши. Бесплатная версия этого продукта имеет ограниченное количество диаграмм и функций, но никакого водяного знака.

7
задан i_am_jorf 13 June 2012 в 19:00
поделиться

3 ответа

Возвращенные объекты обычно выпускаются автоматически. Общее правило: вы вызываете auto- / release только в том случае, если ранее вы вызывали copy / alloc / keep на том же объекте. И вы бы не разыменовали ошибку в вызове метода:

// right
[error code]
// wrong
[*error code]
7
ответ дан 6 December 2019 в 11:49
поделиться

Прочтите правила памяти на developer.apple.com Никогда не доверяйте никому, кто повторяет их, например, «вы ранее вызывали copy / alloc / keep» - это не правило, которое на самом деле говорит что-то вроде «вы получили объект с помощью метода с copy, new или alloc как часть имени». Опять же, не верьте мне, прочтите developer.apple.com

Что касается NSError * *, это просто неправильно. МЕТОД принимает в качестве аргумента NSError * *, то есть указатель на NSError *. Это УКАЗАТЕЛЬ НА NSError *, который будет заполнен адресом NSError, который поступает из где-то , и вы не имеете права предполагать где.

Вы можете передать только указатель на NSError * - что-то еще не так.

Вы также не должны предполагать, что ошибка NSError запускается автоматически. Это может быть синглтон или любое количество альтернатив. Все, что вам нужно знать, это то, что "вы не сохранили, вы не сохраните"

6
ответ дан 6 December 2019 в 11:49
поделиться

Вы не выделили память для ошибки, поэтому вам не нужно ее освобождать . Как правило, фреймворк обычно добавляет автозапуск ко всем создаваемым объектам.

4
ответ дан 6 December 2019 в 11:49
поделиться