Assuming that there is a strong reference to the device, the delegate, and the central manager, is didDiscoverServices guaranteed? Or if the peripheral device is wacky or has some BLE bug, is it possible for the callback to not be triggered?
Is didDiscoverServices guaranteed to be called?
Nothing can really be guaranteed. With any communications with remote devices, it is possible for things to get wrong. Wacky device like you say, wacky connection, bug in your app or the peripheral firmware. Anything is possible.
The best way to start debugging this outside of your app, is to use a Bluetooth packet logger.
If you don't have access to a separate packet logger/analyzer, you can use the one that comes bundled with Xcode Additional Tools
With that you can try to see where the communication might be failing and go fro there.
It may require familiarizing yourself with the details of BLE commands around service discovery.
Argun Tekant / DTS Engineer / Core Technologies