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