The category itself should not be implementing the `UINavigationControllerDelegate` protocol. By doing this, all `UINavigationController` instances (including subclasses) in the entire app will be forced to use the implementation provided in the category, regardless of whether they implement the protocol themselves.

A much safer approach is to create a hidden utility class that implements the protocol, then configure and set it as the delegate when calling the block-based methods.