在过去的4个小时里,我一直在摸不着头脑,尝试各种小实验,但我似乎无法弄清楚出了什么问题。这可能是编译器错误吗?
Test.m:
- (id)initWithContentsOfURL:(NSURL *)aURL error:(NSError **)error
{
if (!(self = [super init])) {
return nil;
}
return self;
}
的main.m:
NSError *error;
Test *t = [[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];
这是编译器警告(来自main.m):
警告:不兼容的Objective-C 类型'struct NSError **',预期 传球时'struct NSDictionary **' 论证2 'initWithContentsOfURL:错误:'来自 不同的Objective-C类型
我正在使用最新版本的Xcode和Snow Leopard。
答案 0 :(得分:5)
我怀疑它正在选择一个不同的选择器实例initWithContentsOfURL:error:
- 也许是NSAppleScript
中的那个。请注意,[NSObject alloc]
会返回id
。
您的代码在运行时是否按预期工作?
尝试将[Test alloc]
的返回值转换为Test*
。
即
Test *t = [(Test*)[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];