一個有趣的現象(蘋果的bug Or 坑?),關於區分真機和模擬器的先行編譯宏

來源:互聯網
上載者:User

標籤:蘋果   宏   sdk   os   iphone   

TARGET_IPHONE_SIMULATOR和TARGET_OS_IPHONE 是蘋果的兩個宏定義,

在真機sdk中位於ios->usr/include/targetconditionals.h中,

在模擬器sdk中位於simulator->usr/include/targetconditionals.h中

(筆者此時使用的xcode版本為5.1,sdk版本是7.1)


仔細看其模擬器sdk中的定義:

    #define TARGET_OS_IPHONE            1
    #define TARGET_IPHONE_SIMULATOR     1


再來看真機sdk中的定義:


    #define TARGET_OS_IPHONE            1
    #define TARGET_IPHONE_SIMULATOR     0


可以發現兩者的區別僅在於TARGET_IPHONE_SIMULATOR 的值,而TARGET_OS_IPHONE 則是一樣,都是真。


所以,我們區分真機模擬器的時候務必用TARGET_IPHONE_SIMULATOR來判斷,使用TARGET_OS_IPHONE將不會有效果。

這個和正常人的邏輯應該是有衝突的吧(反正筆者是這麼認為的,汗)

所以大家使用的時候要注意一下,不要被蘋果給坑了哦~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.