2012-04-27 20 views
5

我有些好奇的iOS應用開發和Xcode,即使我們特別聲明:當項目使用它時,Xcode如何不自動與QuartzCore鏈接?

#import <QuartzCore/QuartzCore.h> 
我們 ViewController.h

,當項目鏈接時,QuartzCore庫沒有自動鏈接。這是爲什麼?

+0

+1對於你的問題...即使在添加QuartzCore框架後,我也面臨同樣的問題。只好谷歌這個語法**#import **。如果自動完成功能在那裏,會喜歡它。 – 2012-04-27 06:02:21

回答

11

因爲導入標題並沒有連接到鏈接庫。

您需要將QuartzCore Framework添加到目標鏈接所針對的列表庫中。

enter image description here

爲什麼Xcode中這樣做自動?

那麼,你正在導入的頭實際上是該框架的一部分。所以Xcode將不得不掃描它的所有框架,檢查它們的標題,並可能自動鏈接連接的庫。對於OS相關的框架來說,這當然是可行的,但只要Xcode不知道它們的位置,對於定製框架來說幾乎是不可能的。 有時,應用程序實際上並不是想讓僅僅因爲它們使用在頭文件中定義的枚舉。

2

Xcode不會自動添加除基數3以外的任何庫。它不需要太多鏈接。也許未來的版本會檢測到,但現在你必須去建立階段並鏈接它們。

+1

是的,鑑於Xcode是如此自動化以至於自動完成項目中的所有內容,即使明顯需要它也不會鏈接,這有點奇怪......但也許它可以防止意外連接太多,如果我們有額外的' #進口',我們其實並沒有使用 – 2012-04-27 00:46:50

+0

明顯是相對的。有些人可能會討厭石英或不想使用它(小組,我知道),但自動鏈接到如此大的圖形密集框架可能並不是每個人都想要的,特別是當CG彌補Quartz的時候。 – CodaFi 2012-04-27 01:45:39

2

問題是Xcode無法知道您的項目應該與Quartz Core Framework鏈接。

#import <QuartzCore/QuartzCore.h>還不足以說你需要Quartz Core Framework。您可以編寫自己的庫,其中包含名爲QuartzCore.h的頭文件,並將其放在名爲QuartzCore的文件夾下。如果它位於包含文件搜索路徑中,則可以使用,除非您還將正式的Quartz Core Framework添加到項目中(這會導致衝突)。

還有其他的例子。當您在Visual Studio中爲.NET項目導入命名空間時,它不會自動將任何程序集添加到項目的「引用」中。這是因爲您可以添加第三方程序集作爲具有相同名稱空間的參考。您還可以添加不同版本的官方.NET Framework程序集。

+0

實際上,您使用大於/小於號的符號來提供那些與操作系統相關的導入,以便將它們標識爲非用戶標題(僅使用引號標記) – Till 2012-04-27 00:55:40

+0

一般而言,您是對的。但是仍然可以將其他包含路徑傳遞給編譯器,並在使用<>表單時搜索用戶頭文件。請參閱http://stackoverflow.com/questions/1044360/import-using-angle-brackets-and-quote-marks。 – Hailei 2012-04-27 01:02:13

相關問題