2011-11-06 55 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

相关问题