Im пытается добавить метод инициализации в категории, как это:Добавление Инициализаторы в категории
@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
Но complais о «супер» неоспоримым класса NSObject и не отвечает на initWithDomain ... Я попробовал отливку super к NSError, но компилятор говорит, что это запрещено.
Если я запустил его, я получаю «нераспознанный селектор, отправленный на ...», поэтому это не просто ошибка кастинга.
О, конечно, спасибо! – oskob
, но если вы замените супер на себя, как это работает, если я еще не полностью инициализирован? – avance
Это то же самое, что и в классе, где у вас есть назначенный инициализатор и куча удобных инициализаторов. Я предполагаю, но я бы предположил, что 'alloc' устанавливает достаточную информацию для' self' для работы в этом контексте. –