あなたが正しいと理解したら、次のように書きたいと思います:
id<SomeProtocol> someObject = AnotherObjectConformingThisProtocol;
Class class = [(NSObject*)SomeObject class];
if ([someObject isKindOfClass:[AnotherObjectConformingThisProtocol class]]) {}
if (class == [AnotherObjectConformingSomeProtocol class]) {}
いいえの場合 - 正確に何を意味するのかを明確にしてください。
更新:別の投稿の近くであなたのコメントを読んで、それを手に入れました:
DataManager および Data プロトコルのラッパー クラスを作成します。
@interface DataClass : NSObject <Data>
@end
@interface DataManagerClass : NSObject <DataManager>
@end
次のようなコードを使用します。
+(DataClass*) dataForName:(NSString *)name {
DataManagerClass* manager = SpecializedDataManager; // <-- which datatype does "manager" have to be?
return [[manager sharedManager] get:name]; //Getting data over a singleton of manager
}