Q1. [выпуск dataFormatter] является
необходимо? Q2. [сегодня релиз]
необходимо
dataFormatter : да, вы выделяете / инициализируете его.
сегодня : нет, он был возвращен автоматически выпущенным фабричным методом.
Q3. [ут релиз] необходим? Q4.
[сейчас релиз] нужен?
То же самое,
ut : да, вы выделяете / инициализируете его.
сейчас : нет, он был возвращен автоматически освобожденным из фабричного метода.
Как определить, когда
объект освобожден?
он высвобождается, когда на него вызывается release
, если вызывается autorelease
, при следующем запуске пула автоматического выпуска будет вызываться release
.
Это тоже нормально с Objective-C, если я
не волнует их?
Нет, это не хорошо. Если вы не будете убирать за собой, у вас будут существенные утечки памяти, в среде iOS это означает полное отключение вашего приложения. В приложении Mac, которое может привести к потере тонны памяти и не быть хорошим гражданином. Это предполагает, что не сборщик мусора. Т.е. большинство.
Я предполагаю, что суть вашего вопроса в том, что вы не уверены, когда отвечаете за вызов release
и когда вы получаете объект autoreleased
(точнее, когда вы отвечаете за вызов release для объекта ). Это условно. Если вы вызываете какой-либо метод, который возвращает объект, который не содержит слова: init / copy, то вы не обязаны вызывать release. Если вы сохраняете, вы освобождаете (может быть, есть еще несколько правил, которым нужно следовать, но, по моему мнению, это первое, кто действительно начнет это понимать). Если вы когда-либо вызываете alloc / init / copy, то в какой-то момент вы должны позвонить release
.
БОЛЬШОЙ учитель - это сборка и анализ в Xcode. Это быстро укажет, где вы облажались, и действительно поможет понять, что происходит.