You haven't provided enough information. Are you using ARC? Are you using a local variable to hold a pointer to the VC, or an instance variable?
How are you concluding that the modal VC's dealloc isn't being called?
If you instantiate your VC using a strong local variable and then call presentViewcontroller:animated:completion:, the presenting view controller will keep a strong reference to your VC while it is being displayed. (You need to use a strong local variable or the newly created VC will be deallocated as soon as you create it.
As soon as the modal is done being dismissed, the presenting view controller will clear it's strong reference, and the modal should be deallocated.