向UIViewController的所有子类添加功能

时间:2014-04-02 11:58:13

标签: objective-c

这是我的情况,我对最好的方法感到困惑(SubClass,Category,Extension,只需在我想要的所有类中编写它)。我想基本上将一个managedObjectContext添加到一堆我的视图控制器并让它传递。我必须将以下代码添加到我的大多数控制器中,并且我意识到可能有一种更简单的方法:

标头文件:

@interface
@property(weak, nonatomic) NSManagedObjectContext *managedObjectContext;
@end

.m文件

// Synthesize the variable
@synthesize managedObjectContext;

// Pass on managedObjectContext
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // If the destination VC is able to take teh setManagedObjectContext method the current objectContext will be passed along.
    if ([segue.destinationViewController respondsToSelector:@selector(setManagedObjectContext:)]) {
        [segue.destinationViewController performSelector:@selector(setManagedObjectContext:)
                                              withObject:self.managedObjectContext];
    } else {

        NSLog(@"Segue to controller [%@] that does not support passing managedObjectContext", [segue destinationViewController]);
    }
}
@end

所以这里的问题是:我有

  • UIViewControllers
  • UITableViewControllers
  • 大概-另一个-uiController

将这些功能添加到班级的最佳方法是什么?

然而,作为一个方面,我确实希望我的课程能够在 prepareForSegue 调用中添加其他方法,这让我觉得subClassing可能是最好的。在我的个人类实现中,我可以调用[super prepareForSegue...]。然而,开始说,我假设我必须为每个视图控制器创建一个单独的类,因为你不能进行多重继承,或者我设法让自己迷惑?

- 编辑 -

各种评论都认为分类是正确的方法,但是,如果我为 prepareForSegue 制作一个类别,我仍然能够以某种方式打电话等同于 [categoryVersion prepareForSegue] 我意识到我可能会使用不同的函数名称,但我确实想要修改prepareForSegue的默认功能

0 个答案:

没有答案