次のようなカテゴリに init メソッドを追加しようとしています。
@interface NSError (message)
+(id)errorWithCode:(NSInteger)code message:(NSString*)message;
-(id)initWithCode:(NSInteger)code message:(NSString*)message;
@end
- @implementation NSError (メッセージ)
+(id)errorWithCode:(NSInteger)code message:(NSString*)message;
{
return [[[[self class] alloc] initWithCode:code message:message] autorelease];
}
-(id)initWithCode:(NSInteger)code message:(NSString*)message;
{
NSMutableDictionary * userInfo = [NSMutableDictionary dictionary];
[userInfo setValue:message forKey:NSLocalizedDescriptionKey];
self = [super initWithDomain:@"some.domain" code:code userInfo:userInfo]; // problem line
return self;
}
@end
しかし、クラス NSObject の「スーパー」ビーイングと initWithDomain に応答しないことについて不満があります...スーパーを NSError にキャストしようとしましたが、コンパイラはそれが許可されていないと言います。
実行すると、「認識されないセレクターが...に送信されました」と表示されるため、単なるキャストエラーではありません。