Выпуск проблем в Objective-C - PullRequest
0 голосов
/ 05 июля 2010

Я хотел бы спросить о проблемах управления памятью в задаче C. Я - зеленый в задаче C. Когда я прочитал некоторые примеры программ с веб-сайта Apple, я увидел [выпуск XXX]. Я предполагаю, что это утверждение используется, чтобы освободить использование переменной. Однако, когда я использую это утверждение в моей программе, у меня возникают некоторые проблемы. Я использовал NSLog () для отображения содержимого, но он не может отображать содержимое, он показывает некоторые утверждения о выпуске.

имеет ли цель C автоматическое управление памятью так же, как Java? или нам нужно заботиться о проблемах с памятью в программе.

Большое спасибо.

Ответы [ 3 ]

7 голосов
/ 05 июля 2010

Objective-C имеет сборку мусора («автоматическое управление памятью»), но только на Mac.Это не доступно на iPhone.Однако правило управления памятью не так уж сложно.Это:

Если вам дали объект через метод (или функцию), который содержит слово new, alloc, retain или copy, то вы должны либо releaseобъект или autorelease это.

Вот и все.Если вы всегда будете следовать этому соглашению, то в 99,999% случаев вы будете в порядке.В остальное 0,001% времени читайте документацию (или спрашивайте нас здесь о StackOverflow! :)).

(Я также добавлю, что все, что в документации говорит, что противоречит этому правилу, выигрывает.)

2 голосов
/ 05 июля 2010

Прочитайте Правила управления памятью . Просто знание этих нескольких простых правил расскажет вам все, что вам нужно знать об управлении памятью в Objective-C.

1 голос
/ 05 июля 2010

Вам нужно вызывать release только для объектов, которые вы init / alloc сами или для переменных вашего экземпляра в своем методе dealloc класса.

Objective-C имеет пулы с автоматическим освобождением.1007 *

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