Необходимо ли выпустить параметры методов в конце их в Objective C?

Если мне передали параметр методу, я должен выпустить параметр в конце метода?

12
задан ohhorob 19 May 2010 в 17:25
поделиться

3 ответа

№. Подумайте NARC : «Новая копия с сохранением размещения». Если вы не делаете ничего из этого, вам не нужно отпускать.

70
ответ дан 2 December 2019 в 02:52
поделиться

Вам нужно освободить их, только если вы сохраните их в своем методе. По соглашению вызывающий отвечает за то, чтобы объекты, переданные в качестве аргументов, существовали, по крайней мере, до тех пор, пока активен вызов.

2
ответ дан 2 December 2019 в 02:52
поделиться

Пожалуйста, прочитайте Руководство по управлению памятью в Cocoa. Следующее правило относится к вашему вопросу:

Вы становитесь владельцем объекта, если создаете его с помощью метода, имя которого начинается с "alloc" или "new" или содержит "copy" (например, alloc, newObject или mutableCopy), или если вы посылаете ему сообщение retain. Вы несете ответственность за отказ от владения объектами, которыми вы владеете, используя release или autorelease. В любое другое время, когда вы получаете объект, вы не должны его освобождать.

Очевидно, что вы не получили параметры, создав их (в своем методе). Поэтому единственная часть, о которой вам нужно беспокоиться, это сохранили ли вы их в методе. Если да, то вы должны освободить или автоосвободить их. Если нет, то вы не должны их освобождать или автоматически освобождать.

6
ответ дан 2 December 2019 в 02:52
поделиться