2016-07-13 45 views
1

我想折線添加到MapView類,在百度的MapView折線超類是BMKPolyLine,它有一個類方法:如何超對象投子類[目標-c]

+ (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' 
+0

你似乎無法理解演員是什麼。強制轉換隻是讓編譯器相信對象是某種類型的。它不會將對象轉換爲您正在將其投影到的類。所以即使你把它轉換成類,它也沒有子類的特定方法。 – vikingosegundo

+0

坦克,你回答 – zerojian

回答

1

這不是「鑄造」(鑄造只是通知編譯器;它不會改變實際的類型) - 但你做了應該返回你的子類的東西。這聽起來像BMKPolyline+polylineWithPoints:count:方法返回BMKPolyline,即使它在子類上調用。相反,您需要重寫所謂的「指定初始化程序」,該程序應在文檔中進行標記。但從我在網上看到的情況來看,並非記錄 - 您可能(煩人)需要查看BMKPolyline的來源以瞭解如何繼續。

+0

謝謝我使用RunTime和類別,它的工作 – zerojian

相關問題