1
我试着去添加某一类别中的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
但complais关于 “超级” beeing类NSObject和没有响应initWithDomain ... 我试图超级NSError投入,但编译器说不允许。
如果我运行它,我得到“无法识别的选择器发送到...”,所以它不只是一个铸造错误。
哦,当然,谢谢一堆! – oskob
但是如果你用自己替换超级,如果自己还没有完全初始化,那么它是如何工作的? – avance
这与您有一个指定的初始化程序和一堆方便初始程序的类相同。我在猜测,但我会想象''alloc'为'self'设置足够的信息以在这种情况下工作。 –