Когда я должен использовать назначить в цель с? - PullRequest
5 голосов
/ 04 февраля 2012

Я понимаю причину, по которой я должен использовать retain , но почему я должен когда-либо использовать assign?( кроме того, чтобы избежать циклов сохранения )

[EDIT] Так что, если я правильно понимаю ответ Чака на https://stackoverflow.com/questions..., всякий раз, когда я использую команду assign,переменная потеряет область видимости, как только выйдет из области видимости метода, как это происходит в обычном поведении языка C-типа?

Ответы [ 4 ]

12 голосов
/ 04 февраля 2012

Вы должны назначать вещи, которые не являются объектами. Любой тип C (например, int, float, char, double, struct и enum) должен быть назначен.

2 голосов
/ 04 февраля 2012

Несколько примеров, которые я могу придумать:

  1. Это не объект.Например, BOOL, int
  2. В большинстве случаев назначаются свойства делегата (для предотвращения циклов)
1 голос
/ 04 февраля 2012

Предполагая, что ответ Чака на связанный вопрос верен, в Objective-C на самом деле нет "области".Похоже, вы должны просто использовать assign для любых примитивов, таких как int или BOOL.Для всего, что вам нужно, используйте retain (или другие команды, как описывает Чак).

1 голос
/ 04 февраля 2012
  1. Все, что не является объектом
  2. Делегаты
  3. IBOutlets, которые не являются верхним уровнем (то есть подпредставления, поскольку они уже сохранены представлением)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...