プロジェクトで宣言された 2 つのプロトコルがあります。最初に書いた名前はSSSelectingCategory.h
#import <Foundation/Foundation.h>
@protocol SSSelectingCategory <NSObject>
@required
@property (nonatomic, strong) SSCategory *selectedCategory;
@end
二つ目はSSSelectingIcon.h
#import <Foundation/Foundation.h>
@protocol SSSelectingIcon <NSObject>
@required
@property (nonatomic, strong) SSIcon *selectedIcon;
@end
奇妙なことに、最初のプロトコルはエラーや警告なしでコンパイルされますが、2 番目のプロトコルはUnknown type name 'SSIcon'
.
この問題に対する答えは、次のように 2 番目のプロトコルで forward-class 宣言を使用することだとわかっています。
#import <Foundation/Foundation.h>
@class SSIcon;
@protocol SSSelectingIcon <NSObject>
@required
@property (nonatomic, strong) SSIcon *selectedIcon;
@end
しかし、今では、明示的またはフォワードクラスの宣言を一切SSSelectingCategory.h
行っていないため、そもそもプロトコルをコンパイルするべきではなかったと思います。#import
コンパイラを静かにしてコーディングを続けることもできますが、どちらのプロトコルも非常に単純であるため、Xcode で何か奇妙なことが起こっているのか、それとも細かい点が欠けているのかを理解したいと思います。SSCategory
and/orSSIcon
クラスは両方ともNSManagedObject
s であり、2 つを接続する関係があるため、これらのクラスに問題がある可能性はありますか?