我经常做这样的事情:
CoolViewController *coolViewController = [[CoolViewController alloc] init];
[self.navigationController pushViewController:coolViewController animated:YES];
[coolViewController release];
在 的类别中UINavigationController
,我将如何覆盖forwardInvocation:
,以便我可以这样做:
[self.navigationController pushCoolViewControllerAnimated:YES];
请在您的答案中包含相关代码,而不仅仅是解释。谢谢!
随意评论这是否是好的做法。我也是出于教育目的而要求这样做,但在我看来,在这种情况下,代码的简化可能会超过处理时间和内存使用方面的不明显(正确?)成本。另外,我来自 Ruby 背景,喜欢使用动态编程来简化事情,例如
find_by_name
Rails 中的动态查找器(例如 )。如果您可以
pushCoolViewControllerAnimated:withBlock
在初始化视图控制器后实现和调用该块,则可以加分,允许我在创建的视图控制器上设置某些实例变量。
更新:我只记得 ARC 即将推出。所以这个特定的例子可能没有那么有用,但仍然是一个很好的练习/例子,可以在其他情况下使用,例如,核心数据的动态查找器和传递一个块来配置NSFetchRequest
.