我在檢測iOS設備上的視網膜顯示時出現問題。我使用的是建議由不同的人下面的代碼:iOS視網膜顯示檢測代碼不起作用
BOOL isRetina()
{
UIScreen* s = [UIScreen mainScreen];
if ([s respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
[s respondsToSelector:@selector(scale)])
{
CGFloat scale = [s scale];
return scale == 2.0;
}
return NO;
}
的問題是,它編譯罰款部署目標的iOS 4或更高,但是當我編譯iOS3.2我得到一個「不兼容類型在初始化「錯誤在」scale = [s scale]「行,因爲我試圖將一個id分配給一個浮點數。我找不到任何關於此的信息。由於其他人似乎都在使用這種方法,我必須在這裏錯過一些非常明顯的東西?順便說一下,使用XCode 4的Base SDK版本是4.3。
這裏是我的BaseSDK /部署目標設置:
更新:我已經解決了它。基本上問題是一些XCode問題。要解決一些其他問題,我必須卸載並重新安裝XCode。之後,行爲消失了。
而只是將結果投入浮動不起作用? (即''CGFloat scale =(CGFloat)[s scale];') – jv42 2011-04-14 14:09:56
不,您不能將指針類型轉換爲浮點型。我已經嘗試過了。甚至試圖通過無效*。 – Gottfried 2011-04-14 14:34:34
當然,因爲我有一段時間不在ObjC,所以我忘記了它的一些內在細節。祝你好運! – jv42 2011-04-14 15:03:13