I'm not sure I understand the reason or motivation for adding the init method `initWithCoder:`, but not having the class conform to the NSCoding protocol. In what cases is this used?
Why does UITableViewController implement initWithCoder, but doesn't conform to NSCoding?
Why do you say that it doesn't conform? It's documented to conform:
Note that the conformance is actually inherited from UIViewController.
And to be more specific, it is used when instantiating from the storyboard. If you have a UITableViewController custom subclass that you are using in a storyboard, then initWithCoder: is the initializer that will be called when your VC is instantiated.