Это не правильное управление памятью.Есть небольшое количество случаев, когда [self release]
является правильным.Нет случаев, когда [self dealloc]
является правильным (вам никогда не следует называть чей-либо номер dealloc
, кроме вашего суперкласса, в вашем собственном dealloc
).
Когда вы говорите "это сломало мою программу" выше, что выимею в виду?ObjectToDealloc
выполняет какую-то фоновую обработку?Если это не так, то вы всегда должны быть в состоянии отпустить его в указанном вами месте.Если он выполняет фоновую обработку, то вам нужно что-то, чтобы сохранить объект до его завершения, а затем отпустить его.Время от времени лучшим подходом является сохранение и освобождение self
, но обычно у вас есть что-то другое, например NSOperationQueue
или подобное.
Более вероятная проблема заключается в том, что вы обрабатываетенеправильно управление памятью в ObjectToDealloc
и что при ее освобождении происходит сбой.Что такое сбой?
Главное, что нужно помнить, это то, что вы никогда не говорите «уничтожить этот объект прямо сейчас» в ObjC.Вы говорите: «Я закончил с этим объектом».Когда все завершают работу с объектом, он уничтожается средой выполнения.