2

行の下のコードをコンパイルすると、id copiedData = [_localData copy];「セレクター 'コピー' の既知のインスタンス メソッドがありません」というコンパイラ エラーが発生します。それ_localDataがタイプid<IGTestClassData>でありIGTestClassData、両方に準拠している場合NSCopyingNSObjectなぜcopyメソッドがないのですか?

IGTestClass.h ファイル

#import <Foundation/Foundation.h>

@protocol IGTestClassData<NSCopying, NSObject>
    @property (nonatomic) NSString* localId;
@end

@interface IGTestClass : NSObject
{
    @protected
    id<IGTestClassData> _localData;
}

    -(void)doTest;
@end

IGTestClass.m ファイル

#import "IGTestClass.h"

@implementation IGTestClass

-(instancetype)initWithLocalData:(id<IGTestClassData>)localData
{
    self = [super init];
    if (self)
    {
        _localData = localData;
    }

    return self;
}

-(void)doTest
{
    id copiedData = [_localData copy];
}

@end
4

1 に答える 1