如何将SuperClass对象强制转换为SubClass [objective -c]

时间:2016-07-13 16:23:43

标签: ios objective-c

我想将polyLine添加到mapView,百度mapView折线超类是BMKPolyLine,它有一个类方法:

+ (BMKPolyline *)polylineWithPoints:(BMKMapPoint *)points count:(NSUInteger)count; 

我创建了一个子类BKMyPolyLine,我添加了一个@property colorString

当我得到分数并使用超类方法时:

BKMyPolyLine *myLine = [BKMyPolyLine polylineWithPoints:points count:points.count];

myLine.colorString = colorString;

和崩溃消息:

[BMKPolyline setColorString:]: unrecognized selector sent to instance 0x138266fe0'   

1 个答案:

答案 0 :(得分:1)

这不是“强制转换”(仅仅通知编译器;它不会改变实际类型) - 但是已经完成了应该返回子类的事情。听起来BMKPolyline的{​​{1}}方法返回+polylineWithPoints:count:,即使在子类上调用它也是如此。相反,您需要覆盖所谓的“指定初始化程序”,这应该在文档中标记。但是从我在网上看到的情况来看,没有记录 - 您可能(烦人地)需要查看BMKPolyline的来源以了解如何继续。