今天我遇到了一個奇怪的問題。我創建了UIView的一個子類,並且僅向xcode提供的模板代碼添加了1個方法。目標C中的子類化和鑄造
@interface FloatView : UIView {
}
- (void)floatTest:(CGFloat)x;
@end
- (void)floatTest:(CGFloat)x {
NSLog(@"float was %f", x);
}
然後在我的appDelegate我有這樣的代碼:
很簡單,不是嗎?該打印什麼?我認爲它會像「10.0000」,但不是,它打印出「0.000000」。
我糾結這個了幾個小時,試圖找出我在做什麼錯了,然後我改變了代碼在我的appDelegate到
FloatView *floatView = [[FloatView alloc] init];
[floatView floatTest:10.0f];
只有到那時,沒有它打印出預期的「10.0000」 。這是爲什麼?我已經宣佈FloatView作爲UIView的子類,我不應該能夠將一個FloatView對象分配給沒有問題的UIView指針?
儘管floatView被聲明爲UIView的指針,但它確實是一個floatView,它應該能夠處理floatTest消息?我完全脫離基地嗎?
你的代碼生成了一個編譯器警告,對吧?如果你已經明白了原因,你就可以解決問題。 – bbum 2009-09-12 18:36:04
它可能已經解決了這個問題,但我可能不會理解它爲什麼會如此行事。您的評論真的沒有幫助。感謝Mehrdad Afshari的詳細迴應。 – 2011-12-14 13:28:01