Нужно ли публиковать параметры методов в конце их в Objective-C? - PullRequest
12 голосов
/ 19 мая 2010

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

Ответы [ 4 ]

70 голосов
/ 19 мая 2010

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

6 голосов
/ 19 мая 2010

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

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

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

2 голосов
/ 19 мая 2010

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

0 голосов
/ 23 августа 2013

Если вы не работаете напрямую с фундаментными объектами, вы должны передать все это ARC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...