2011-11-06 79 views
3

除了ImageKit類,XCode4中的其他所有工作都能正常工作。 「IKImage」開頭的類和協議是「未找到」 - 它將針對其中的一些(例如IKImageBrowserView)進行編譯,但是其他編譯器甚至不會編譯 - 例如,IKImageBrowserView。協議IKImageBrowserItem。IKImageBrowserItem找不到協議聲明

它不會自動完成其中的任何一個 - 即使是編譯的。

看來有些東西壞了 - 但我不知道是什麼,我不知道如何解決它。總結:

  1. 我建立針對OS X 10.6 - 根據蘋果的文檔,包括10.5這些文件
  2. 我添加Quartz框架
  3. 我添加Quartzcore框架
  4. 我米進口:#進口<石英/ Quartz.h >

我從蘋果檢查實際的框架文件,以及石英/ ImageKit是顯然缺少蘋果公司的文檔應該存在的標題:(。

注意:在我的Xcode4安裝中沒有任何其他缺失或損壞 - 我開發OS X 32和64位應用程序,以及iPhone和iPad應用程序都很好。

還有什麼我應該做的?

+0

檢查'系統/庫/框架'文件夾可以看到'Quartz.framework'和'QuartzCore.framework',哦,我看到你現在已經添加 – Synxmax

回答

0

Does this help

好吧,看我的#import語句之後,我意識到 問題是一個奇怪的進口環,在那裏我應該用@class。 感謝您指點我正確的方向!

這很有趣,問題看起來如此簡單。

也許這樣的答案,恐怕將是這種類型的ORER問題的更具體的論壇上找到,將有足夠的知識來回答

+0

我不相信這是相關的。你引用的例子是有人寫他們自己的協議的地方。就我而言,我試圖訪問Apple自己的API,並且頭文件被忽略。 – Adam

1

你不會有問題的人將IKImageBrowserItem委託與您自己的類相關聯。

@interface MyOwnClass : NSObject/*<NSImageBrowserKit>*/ 

這是不可能的,因爲頭ImageKit.h不公開。但是,當您添加Quartz框架時,IKImageBrowserItem的協議已經鏈接到NSObject類,然後鏈接到您自己的類。

蘋果已經取得了IKImageBrowserItem的協議是這樣的(在ImageKit/IKImageBrowserView.m文件):

@interface NSObject (IKImageBrowserItem) 

事實上這個協議是NSObject類的擴展。

您只需在自己的類實現中直接實現IKImageBrowserItem協議的選擇器。

@implementation MyOwnClass 

- (NSString *) imageUID 
{ 
    /*your implementation*/ 
} 

- (NSString *)imageRepresentationType 
{ 
    /*your implementation*/ 
} 

@end 

等....

自動完成將工作!

+0

啊,所以這是蘋果公司的文件是錯誤的 - IKImageBrowserItem不是一個協議,它是一個類擴展? – Adam

+0

確實......從我看來,它看起來更像是一個抽象選擇器的單一界面。告訴我,如果我錯了。 – csblo

+0

我的Mac許可已失效(蘋果證書永久破解,無法重建任何應用程序,我從應用程序商店將它們拉出,等待Apple修復),所以我無法檢查 - 但聽起來很可信。與現代iOS版本相比,OS X仍然有許多糟糕的舊API,設計較弱。 – Adam

相關問題