Is it good practice for an object in Objective-C to commit suicide? That is, for an object declaring [self dealloc], where -dealloc allows an ordered wind, as usual? What are the main risks?
No.
The only time you should ever write a call to dealloc is to send dealloc to a super object in the dealloc method of one of your classes. There are no exceptions.
If you try to send dealloc to an object at any other time, you risk leaving other objects with dangling pointers. Do not do this.
- ? , . " ", - . , init, , nil ( , , alloc self).