以我TheTabBarController,而不符合UINavigationControllerDelegate協議,我可以分配我的類moreNavigationController.delegate。實施方法不符合協議
// without conforming to protocol, <UINavigationControllerDelegate>
@interface TheTabBarController : UITabBarController
self.moreNavigationController.delegate = self;
它只是引發下面的警告,但編譯成功。
分配到 'TheTabBarController * const的__strong'
這種協議的方法在運行時調用沒有任何錯誤從不相容 類型的 'id'。我用它來隱藏一些視圖控制器的更多導航欄。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
所以,我想知道,這是合法的,安全的或;它會在以後崩潰還是泄漏內存?這怎麼可能在語義上被允許?運行時如何解決該方法,儘管它在界面中沒有定義並且協議不符合?或者,UITabBarController使用符合協議的隱藏類別?