Objective c 未正确调用具体子类上的方法
我正在尝试创建一个超类,我知道它将被子类化(我会使对象抽象,但根据,您不能)。超类定义了一个方法,Objective c 未正确调用具体子类上的方法,objective-c,polymorphism,Objective C,Polymorphism,我正在尝试创建一个超类,我知道它将被子类化(我会使对象抽象,但根据,您不能)。超类定义了一个方法,-initWithArguments:,它只是抛出一个错误,因为它被子类重写。超类还有一个静态初始值设定项,用于确定在运行时返回哪个子类,如下所示: Class subClass = NSClassFromString(classNameFromFile); NSArray *argumentArray = [ArgumentsFromFile componentsSeparatedByString
-initWithArguments:
,它只是抛出一个错误,因为它被子类重写。超类还有一个静态初始值设定项,用于确定在运行时返回哪个子类,如下所示:
Class subClass = NSClassFromString(classNameFromFile);
NSArray *argumentArray = [ArgumentsFromFile componentsSeparatedByString:@","];
SuperClass *returnObject = [[subClass alloc] initWithArguments:argumentArray];
if([returnObject isKindOfClass:[SuperClass class]]){
return returnObject;
}
我希望重写的
-initWithArguments:
方法将在第3行中调用。但是,当我运行这段代码时,只有超类的-initWithArguments:
被调用。我已经检查并再次检查了重写的方法签名是否正确,并且我已经确认子类正确地表示了子类。我勒个去?这是否与我在超类中调用-initWithArguments:
有关?提前感谢您的帮助;我爱你们所有人。要么您的子类没有真正覆盖-initWithArguments:
,要么您没有正确加载子类。因此:
-initWithArguments:
中放置断点-initWithArumgnets:
,则仍将调用超类的-initWithArguments:
-allocWithZone:
还是什么?如果是这样的话,我敢打赌一百万美元你的臭虫就在那里,如果是这样的话祝你好运 我覆盖了allocWithZone:在程序的另一端,在一个不相关的单例中。这样行吗?我已经检查并再次检查了我的方法签名是否正确,并且我已经调试并确保正确加载了我的子类。我已经在两个实现中都设置了断点,而编译器总是选择错误的断点。我修复了它!我觉得自己很愚蠢。我的文件数据有问题。不过还是谢谢你。我希望我给了你一些心理训练,让你在比赛中领先。