2016-07-13 2 views
1
내가지도보기에 폴리 라인을 추가 할

에 객체 캐스트를 슈퍼 클래스의 바이두지도보기 폴리 라인의 슈퍼 클래스 BMKPolyLine이며, 그것은 클래스 메소드가어떻게 하위 클래스 [목적 -c]

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

myLine.colorString = colorString; 

과 충돌 메시지 :

나는 점 사용 슈퍼 방법을 얻을 때

을 colorString @property를 추가

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

캐스트가 무엇인지 이해하지 못하는 것 같습니다. 캐스트는 컴파일러가 객체가 특정 유형이라고 믿게 만듭니다. 그것을 캐스팅 할 클래스로 객체를 변환하지 않습니다. 따라서 클래스에 캐스트해도 하위 클래스의 특정 메서드는 없습니다. – vikingosegundo

+0

탱크, 당신은 – zerojian

답변

1

이것은 "캐스팅"되지 않습니다 (캐스팅은 컴파일러에게 알립니다. 실제 유형을 변경하지 않음) -하지만 이있어 서브 클래스를 리턴해야합니다. BMKPolyline+polylineWithPoints:count: 메서드는 서브 클래스에서 호출 될 때에도 BMKPolyline을 반환합니다. 대신 문서에 표시해야하는 "지정된 초기화 프로그램"을 무시해야합니다. 하지만 내가 온라인에서 보는 것에서 보면 은 문서화 된이 아니기 때문에 진행 방법을 알기 위해서는 BMKPolyline의 출처를 조사해야 할 것입니다.

+0

대답 덕분에 내가 런타임 및 카테고리를 사용하여, 그것은 작동합니다 – zerojian