Если rvc
является сохраняемым свойством, у вас есть утечка .Вот почему контроллер не получает dealloc
.Когда вы создаете контроллер представления, вы чрезмерно сохраняете it:
self.rvc = [[RootViewController alloc] initWithNibName:...];
alloc
возвращает сохраненный объект (+1).Затем установщик свойств также сохраняет объект (+2).Позже, когда вы отпускаете (-1) объект, вы получаете + 1.
. Чтобы решить эту проблему, используйте временную переменную или autorelease
:
self.rvc = [[[RootViewController alloc] initWithNibName:...] autorelease];
Еще одна проблема связана с тем, как вы освобождаете объект, который удерживает ваше свойство:
[self.rvc release];
После этого заявления вы отказались от права собственности на объект, и ничто не гарантирует, что объект будет действительнымбудущее, но ваша собственность все еще держит указатель на него.Другими словами, у вас есть потенциальная свисающая ссылка.Итак, обнуляйте свойство при его освобождении с помощью этого единственного оператора (это освободит старый объект):
self.rvc = nil;