2012-07-05 21 views
0

我從谷歌搜索,但XCode中顯示錯誤得到這個代碼:「財產‘backingScaleFactor’沒有對象類型‘NSScreen *’發現」如何獲得[NSScreen backingScaleFactor]可可目標10.6

CGFloat displayScale = 1.0f; 
if ([[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)]) 
{ 

     displayScale = [NSScreen mainScreen].backingScaleFactor; 
} 

回答

1

使用[[NSScreen mainScreen] backingScaleFactor]和確保您正在構建OS X 10.7 SDK,並將部署目標設置爲10.6。

+0

-1這是不正確的。如果您使用僅存在於10.7的API,則不會有構建警告,但該應用程序將在10.6的啓動時崩潰。看到這裏:http://lapcatsoftware.com/articles/sdkvsdeploymenttarget.html – Sanich 2016-05-05 14:43:10

+0

@Sanich:他有一個明確的'[[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)]'在那裏檢查,這將防止應用程序崩潰,因爲該代碼根本不會在10.6上執行。請重新考慮你的-1。 – MrMage 2016-05-09 14:23:13

+0

是的,他的代碼不會崩潰,但是,您的答案仍然不正確。當您的部署目標是10.6時,它將無助於更改爲SDK 10.7以獲得'backingScaleFactor'屬性 – Sanich 2016-05-09 14:45:08

-1

不能,因爲backingScaleFactor屬性在OS X v10.7及更高版本中可用。見Apple documentation。 更改爲SDK 10.7(或更高版本)也無濟於事。因爲如果你使用只存在於10.7的API,那麼將不會有構建警告,但應用程序將在10.6的啓動時崩潰。請參閱here

編輯:您可以使用if ([[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)])和您的應用程序不會崩潰,但是這是另一種東西的另一個做法,並挑釁不會達到你所想。

如果您描述了您正在嘗試做什麼以及爲什麼您需要backingScaleFactor我會盡力幫您解決一些技巧和竅門。

+0

如果保留if([[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)]),應用程序不會崩潰。 – MrMage 2016-05-10 08:14:58

+0

@MrMage問題不在於應用程序是否會崩潰。他的問題是**如何獲得可可瞄準10.6 **的[NSScreen backingScaleFactor]。答案是,你只是**不能!**。你可以使用'選擇器檢查'程序不會崩潰,但在這種情況下這不是建議的做法,因爲它會編譯並運行,但不會執行他想要的。所以你的回答並不回答他的問題和誤導。請專業,重新考慮你的-1。 – Sanich 2016-05-11 11:14:26