【发布时间】:2017-03-29 14:30:43
【问题描述】:
我有一个类的两个标题和它的扩展名(由 Xcode 为 NSManaged 对象生成)。但是我收到了一个链接器错误,我发现这是由于循环引用造成的。
对话+CoreDataClass.h
NS_ASSUME_NONNULL_BEGIN
@interface Conversation : NSManagedObject
@end
NS_ASSUME_NONNULL_END
#import "Conversation+CoreDataProperties.h"
对话+CoreDataProperties.h
#import "Conversation+CoreDataClass.h"
NS_ASSUME_NONNULL_BEGIN
@interface Conversation (CoreDataProperties)
+ (NSFetchRequest<Conversation *> *)fetchRequest;
@end
NS_ASSUME_NONNULL_END
您可以在此处清楚地看到循环引用。我发现这个question 的问题是添加@class 声明并删除标题。所以我注释掉了Conversation+CoreDataProperties.h中的import语句,并添加了@class Conversation;。现在弹出两个错误,说它是一个未定义的类。附上以下错误的屏幕截图。我不太明白为什么会发生这种情况以及我需要做些什么来解决它。任何帮助深表感谢。谢谢!
链接器错误
重复符号 _OBJC_CLASS__$_Conversation 在: /Users/xxx/Library/Developer/Xcode/DerivedData/xxx-gbhivuwptwzhkldfbmjghkokozgn/Build/Intermediates/xxx.build/Debug-iphoneos/xxx.build/Objects-normal/arm64/Conversation+CoreDataClass.o 重复符号 _OBJC_METACLASS_$_Conversation 在: /Users/xxx/Library/Developer/Xcode/DerivedData/xxx-gbhivuwptwzhkldfbmjghkokozgn/Build/Intermediates/xxx.build/Debug-iphoneos/xxx.build/Objects-normal/arm64/Conversation+CoreDataClass.o 重复符号 _OBJC_CLASS_$_ConversationDate 在: /Users/xxx/Library/Developer/Xcode/DerivedData/xxx-gbhivuwptwzhkldfbmjghkokozgn/Build/Intermediates/xxx.build/Debug-iphoneos/xxx.build/Objects-normal/arm64/ConversationDate+CoreDataClass.o 重复符号 _OBJC_METACLASS_$_ConversationDate 在: /Users/xxx/Library/Developer/Xcode/DerivedData/xxx-gbhivuwptwzhkldfbmjghkokozgn/Build/Intermediates/xxx.build/Debug-iphoneos/xxx.build/Objects-normal/arm64/ConversationDate+CoreDataClass.o ld:架构arm64 clang的4个重复符号:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)
【问题讨论】:
-
这有点奇怪。尝试清理您的项目(shift-cmd-K)并重建。
-
@dirkgroten 这没有帮助。仍然有错误。
标签: ios objective-c circular-reference