0

我只是好奇是否可以说我有一个 webView 的单例属性,我试图在另一个 viewController 的初始化点分配。编译器正在生成指示“不兼容的指针类型”的错误。

我不确定它为什么这样做,因为该类的超类仍然是 UIViewController。这里的任何帮助将不胜感激。

谢谢。

下面的代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {

    self = [super initWithNibName:nil bundle:nil];

    if (self) {

        // Work your initialising magic here as you normally would
        if ([[CartCheckout sharedInstance] universalVC]) {
            //self = [[CartCheckout sharedInstance] universalVC];
            NSLog(@"testing");
            self = [[CartCheckout sharedInstance] universalVC];
        }
        NSLog(@"initWithNibName allocated");
    }

    return self; }
4

1 回答 1

0

发生这种情况是因为您尝试对其进行分配的实际实例的视图控制器的类型不正确,它们共享一个超类并不重要。

在这种情况下,self 是一种且只有一种类型,即视图控制器子类的类型。

此外,即使它们是相同的类型,Objective C 也不会让您用任何东西替换 init 方法中的类实例。

init 方法是实例分配方法,如果您返回指向您实际所在实例之外的其他内容的指针,您将立即崩溃。

所以你有两个问题,一是你试图将一个单例实例注入到一个 init 方法中,二是你试图劫持视图的容器。

这些都行不通。在需要时实例化正确类型的 viewController 以配合您的视图。

你想要的是这样的:

MyUniversalViewController *universalVC = [MyUniversalViewController alloc] initWithNibName:@"blabla

尝试在构造函数中切换类型为时已晚。

于 2012-08-08T05:31:37.553 回答