UIViewController上的“Empty”类别与取消链接的行为不同

时间:2013-09-11 16:18:12

标签: ios uiviewcontroller uitabbarcontroller categories ios7

我已经创建了一个UIViewController类别来处理iOS 7中的一些视图控制器怪异问题。如果没有在NDA下公开任何API,这里是被覆盖的init方法:

@implementation UIViewController (ios7)
-(id)init {
    self = [super init];
    if (self) {
        if ([self respondsToSelector:@selector(<iOS7OnlyMethod>)]) {
           // additional setup
        }
    }
    return self;
}
@end

我验证了在7.0模拟器中运行时条件触发,如果在6.1模拟器中运行则不会触发。

以下是谜题:虽然代码未运行,但我的标签栏中的标签栏图标在6.1中消失。但是,如果我在此.m文件的文件检查器中取消选中我的目标(即我不在编译中包含它),则标签栏项目将照常显示。

这怎么可能?

修改

经过一番思考后,我发现我可能会覆盖init的{​​{1}}方法 - 所以每个UIViewController只能使用UIViewController {{}}进行初始化1}}和我提供的附加代码(或不代码)。据推测,initUIResponder方法中有更多更重要的东西,我已经用这种方式规避了这种方法。

问题是,我有一个包含许多视图控制器的庞大项目。它应该适用于iOS 6和iOS 7.我认为有一个类别,我可以避免修改项目中的所有视图控制器。

如何解决这个问题?是否有其他可以覆盖的方法呢?

0 个答案:

没有答案