2011-01-14 63 views
2

我需要維護這兩個sdk(3.0和4.0)。但在3.0 sdk我得到錯誤。我需要維護兩個sdk(3.0和4.0)。但在3.0 sdk我得到錯誤

CGFloat maxScale; 

if ([[UIScreen mainScreen] respondsToSelector: @selector (scale)] == YES) 
{ 
    maxScale = 1.0/[[UIScreen mainScreen] scale]; 
} 
else 
{ 
    maxScale = 1.0; 
} 


warning: 'UIScreen' may not respond to '-scale' 
error: invalid operands to binary/(have 'double' and 'id') 

我該如何解決這個問題?

+0

看起來像蘋果已經在3.0規模作爲id類型的內置,但沒有使其有用/可用。也許試圖測試版本(儘管這被廣泛認爲不是最佳實踐)可能是唯一的選擇。 – 2011-01-14 17:03:52

回答

3

如果您希望在建立與不同的SDK版本,那麼你需要使用預處理程序代碼是不同的:

#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED 

    maxScale = 1.0/[[UIScreen mainScreen] scale]; 

#else 

    maxScale = 1.0; 
#endif 

但通常你不需要那麼,你所擁有的最新的SDK構建項目併爲您的目標的「iOS部署目標」屬性設置適當的值。然後,您的應用程序將運行在您指定的sdk版本上,並且代碼您將使運行時檢查方法是否存在-scale