我只是好奇,如果让我说我有一个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; }
答案 0 :(得分:0)
这种情况正在发生,因为您尝试进行分配的实际实例的视图控制器的类型不正确,它们共享超类并不重要。
在这种情况下,self是一种且只有一种类型,即视图控制器子类的类型。
此外,即使它们是相同的类型,Objective C也不会让你在init方法中用任何东西替换类的实例。
init方法是实例分配方法,如果你返回指向你实际所在实例之外的东西的指针,你将立即崩溃。
所以你有两个问题,一个,你试图将一个单例实例注入一个init方法,另外两个你试图劫持一个视图的容器。
这些都不会奏效。实例化正确类型的viewController,以便在您需要时随身携带。
你想要的是:
MyUniversalViewController *universalVC = [MyUniversalViewController alloc] initWithNibName:@"blabla
尝试在构造函数中切换类型为时已晚。