Сохранить информацию в какао? - PullRequest
0 голосов
/ 18 апреля 2010

Я все еще новичок в Какао и мало что знаю об управлении памятью. Я прочитал документацию Apple, но я все еще в замешательстве. Мой вопрос: если я установлю значение переменной в - (void)dowhatever, когда dowhatever закончится, будет ли удалено содержимое переменной? Если да, есть ли метод (без записи в файл), который я могу использовать для сохранения содержимого переменной?

Спасибо за любую помощь

1 Ответ

2 голосов
/ 18 апреля 2010

У меня вопрос, если я установлю значение переменной в - (void)dowhatever, когда пустота закончится, ...

void это тип. У него нет ни начала, ни конца.

В частности, это тип возврата метода dowhatever. Если dowhatever вернул значение, тип этого возвращаемого значения будет таким, как у вас void; это скажет, например, - (NSUInteger) doWhatever. Наличие void означает, что метод не возвращает значение.

См. Также документ Язык программирования Objective-C 2.0 .

… будет ли удалено содержимое переменной?

Если это локальная переменная, то эта переменная перестанет существовать, когда метод вернется.

Переменная экземпляра существует до тех пор, пока существует экземпляр (объект), частью которого является переменная, то есть до тех пор, пока экземпляр не будет освобожден.

Переменные экземпляра также описаны в документации Objective-C.

Если да, есть ли метод (без записи в файл), который я могу использовать для сохранения содержимого переменной?

Если вам просто нужно вернуть объект вызывающей стороне, сохраните его и автоматически освободите. См. Руководство по программированию управления памятью для какао для получения дополнительной информации.

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

Думайте в терминах объектов: объект может владеть определенными другими объектами и имеет переменную экземпляра для каждого объекта, которым он владеет *. До тех пор, пока у вас есть свои права собственности и они сохраняются в коде, время жизни объектов просто работает.

Если объект A нуждается в другом объекте B, то A должен владеть B. Это право собственности не является исключительным; он может совместно владеть B. Но ему необходимо , по крайней мере, совладеть B; B останется живым, пока у него есть хотя бы один владелец.

Это также описано в Руководстве по управлению памятью. Для других примеров взаимоотношений между объектами вам следует просмотреть Руководство по основам какао , в частности главу Шаблоны проектирования какао , и вы можете просмотреть пример кода чтобы увидеть эти образцы, продемонстрированные на практике.

* Он также может иметь переменные экземпляра для объектов, которые ему не принадлежат, таких как делегаты. У вас может быть переменная экземпляра для объекта, который вам не принадлежит, но если вы им владеете, у вас должна быть переменная экземпляра для него.

...