The reality is that car repair is going to be a thing of the past. When Cars are nothing but an electric motor, chassis, and battery, there's nothing left to fix. Electric motors are orders of magnitude more reliable than internal combustion.
>It took an already hard-to-discover feature and made it more nuanced (that is, more complicated).
I would argue that it fixed the long hold, honestly. Waiting for long holds is a total pain. Being able to reach the same level of contextual menus instantly without long holding is a huge source of relief for the user in apps that rely on that kind of interaction.
It's kind of a shame to see so much hate for a neat feature. I think a lot of non developers gave Apple shit for 3D touch as just another gimmick because they don't see the fundamental interaction problem that it solved. Long holds on mobile are excruciating interactions for people, and 3D touch fixes that. It allows the user to reach a deeper level of contextual actions, without forcing them to wait like a long tap and hold does. Anything that empowers the user like that is a huge win in my mind.
I really hope apple sticks with it moving forward. As a developer I have been having a blast coming up with new and interesting ways to use it that legitimately increase a user's satisfaction and the usefulness of an app.
You may be misunderstanding the usage of the word "private". It doesn't mean that these APIs are obfuscated from developers, it's just that they are only meant to be used internally by frameworks created by Apple. Using them directly can result in all kinds of unforeseen behavior because they were never meant to be instantiated or called by arbitrary objects.
Third party developers should conform their code to Apple's public API's, plain and simple. Hacking around in Apple's private APIs is just begging for a crash or an incompatibility when Apple changes something under the hood.
Just wanted to chime in and say that's actually really bad code. Accessing a views subviews like that and looking for a specific instance of a class is just begging for a crash.