2013-12-11 22 views
17

今天剛剛偶然發現了這個。如果我嘗試訪問CALayer而沒有導入<QuartzCore/QuartzCore.h>,我在Xcode 4.6中收到警告。然而,同樣在Xcode工作正常5.在Xcode 5中不需要Quartz Core Import?

+7

是的,這是真的。我懷疑當iOS6沒有時,iOS7 SDK隱式地包含了這個框架。這隻會是一個問題,如果你試圖保持你的項目跨Xcode4&5 –

+0

工作我想請求SO標記這個問題爲社區Wiki。 –

+0

不確定,但我認爲它是內置在Xcode 5 –

回答

23

是,<QuartzCore/QuartzCore.h>自動包含, 但這似乎更多的副作用比預期的,因爲它 只包括間接:

  • <UIKit/UIKit.h>包括<UIKit/UISlider.h>
  • 在iOS 7 SDK中,<UIKit/UISlider.h>包括<QuartzCore/QuartzCore.h>, 由於UISlider類(的CAShapeLayer類型)中的新實例變量。

此外,Xcode中5具有一個新的構建設置「鏈接框架自動」,這是由 默認上(並且需要新的「模塊」的功能),從而使QuartzCore框架 也被添加到鏈接庫。

+1

+10這樣一個簡潔明瞭的解釋.PS:我仍然能夠使用CALayer方法,而不必將其添加到鏈接與二進制庫 – Anonymous

+0

我也注意到,也,而'UISlider'頭文件特別詳細,因爲ivars是在類接口中聲明的(我們知道iOS 7的設計被稱爲「neue neue」)......它可能不是有意的! – Guillaume

+1

@匿名:你說得對。我已經使用最初使用Xcode 4創建的項目對其進行了測試。使用新的Xcode 5項目時,默認情況下會自動鏈接引用的庫。我已經相應地更新了答案。 –