我有一個名爲MyImage的自定義類從UIImage繼承。現在我有一個UIImage對象,有什麼辦法將它轉換成MyImage對象嗎?Objective-c將父類轉換爲其派生類
更新
對不起不夠明確。
我無法使用類別,因爲我需要向我的課程添加新的屬性。
我想完成的是讓我的MyImage對象指向原始的UIImage對象。
更新2
我想是這樣的:
- (MyImage*)initWithUIImage:(UIImage *)image {
if (self = [super init]) {
self = image;
}
return self;
}
明顯這是行不通的。
而且,由於UIImage的沒有一個名爲 'initWithImage:(的UIImage *)' 的方法,我不能寫類似
myImage = [[MyImage alloc] initWithImage:uiImage];
我也試過
self = [image copy]
但返回值是仍然是UIImage對象,而不是MyImage對象。
更新3
在MYIMAGE,我需要添加3個屬性:URL,寬度和高度。由於我正在編寫即時消息應用程序,並且在收到新的圖像消息時,我只有它的網址,寬度和高度。然後我將它們分配給一個MyImage對象,並在後臺下載圖像。
現在給出一個原始的UIImage A,我想創建一個新的MyImage對象B,它指向與A相同的圖像,但未分配這些新屬性。然後我手動指定URL,寬度和高度B.
到@rmaddy,你能告訴我怎麼寫的方法
[[MyImage alloc] initWithImage:(UIImage*)]
?
的一種方式,我可以想出是第一個UIImage對象轉換爲NSData的,然後使用
[MyImage imageWithData:]
有沒有更好的辦法?
你可以寫'myImage = [[MyImage alloc] initWithImage:uiImage];''。正如我在回答中所述,這需要在'MyImage'類中添加'initWithImage:'方法。 – rmaddy
你的對象是'UIImage'或'MyImage'。它不可能是兩個;這會違反非矛盾法則。如果你解釋爲什麼你想要'UIImage'的子類,它可能會有所幫助。例如,如果你只是添加方法(像'downloadWithURL:'有點常見),你只需要這樣做,然後你可以在任何需要'UIImage'的類中使用'MyImage',因爲'MyImage'是一種'UIImage'。 –
發佈您的'MyImage'類的更多細節。沒有任何細節,很難提供具體的答案。 – rmaddy