В viewDidUnload типичная практика - обнулять, используя средства доступа, любые объекты, встроенные в представление контроллера представления - кнопки, представления, текстовые поля, любого потомка UIView, который может быть в иерархии представления:
self.myButton = nil;
В dealloc вы должны выпустить ВСЕ сохраненные переменные напрямую, включая подпредставления:
[myButton release];
[someStateObject release];