I have a suggestion - its a very remote possibility - but I've had issues with MFMessageComposeViewController in the past. It should be worth a few minutes of your time.
The suggestion is to make MFMessageComposeViewController() an ivar - optional - set it when created so it keeps a strong reference to the object, and only release it (but making the ivar nil) in a block posted to the main thread. More:
- insure that you are on main thread when creating the object: assert(NSThread.isMainThread)
- use an ivar instead of a local variable (or at least save object to the ivar before releasing it)
- in the delegate method, perhaps "print" the type of message you get just to insure nothing else is wrong
- in the delegate, dispatch a block to the main thread that nils our your ivar with the strong reference to MFMessageComposeViewController
Why did I respond? Well, I have a Q&A on StackOverflow about weird crashes with MFMessageComposeViewController - my suggestion there is as above, and that anser got me 50 award points and four upvotes, one that happened this AM :-)