Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 不一致';未知类型名称';协议引用NSManagedObject子类时出错_Objective C_Ios5_Xcode4_Protocols_Nsmanagedobject - Fatal编程技术网

Objective c 不一致';未知类型名称';协议引用NSManagedObject子类时出错

Objective c 不一致';未知类型名称';协议引用NSManagedObject子类时出错,objective-c,ios5,xcode4,protocols,nsmanagedobject,Objective C,Ios5,Xcode4,Protocols,Nsmanagedobject,我在我的项目中声明了两个协议。我写的第一个名为SSSelectingCategory.h #import <Foundation/Foundation.h> @protocol SSSelectingCategory <NSObject> @required @property (nonatomic, strong) SSCategory *selectedCategory; @end 奇怪的是,第一个协议编译时没有任何错误或警告,而第二个协议抛出了未知类型名“S

我在我的项目中声明了两个协议。我写的第一个名为
SSSelectingCategory.h

#import <Foundation/Foundation.h>

@protocol SSSelectingCategory <NSObject>

@required
@property (nonatomic, strong) SSCategory *selectedCategory;

@end
奇怪的是,第一个协议编译时没有任何错误或警告,而第二个协议抛出了
未知类型名“SSIcon”

我知道这个问题的答案是在我的第二个协议中使用转发类声明,如下所示:

#import <Foundation/Foundation.h>
@class SSIcon;

@protocol SSSelectingIcon <NSObject>

@required
@property (nonatomic, strong) SSIcon *selectedIcon;

@end
#导入
@SSIcon类;
@协议选择图标
@必需的
@性质(非原子,强)SSIcon*selectedIcon;
@结束
但是现在这让我觉得
SSSelectingCategory.h
协议本来就不应该编译,因为我没有提出任何明确的
#导入
或任何类型的前向类声明


我可以让编译器安静下来继续编码,但我想知道Xcode是否有什么奇怪的地方,或者我是否遗漏了一些细节,因为这两个协议都非常简单。
SSCategory
和/或
SSIcon
类是否有问题,因为它们都是
NSManagedObject
s,并且两者之间存在联系?

编译器编译.m文件,其中又包括.h文件

因此,我假设在包含“SSSelectingCategory.h”的.m文件中,
SSCategory
是在前面定义的,因此编译器在编译协议时没有问题

另一方面,如果包含“SSSelectingIcon.h”而之前没有定义
SSIcon
,编译器将中止,并在那里出错


在任何情况下,在.h文件中包含所需的接口(或向前声明所需的类)都是有意义的,因为这样可以在Xcode中完成代码。

谢谢Martin R,正如您所描述的那样。又一个教训!
#import <Foundation/Foundation.h>
@class SSIcon;

@protocol SSSelectingIcon <NSObject>

@required
@property (nonatomic, strong) SSIcon *selectedIcon;

@end