我得到一个奇怪的警告与我initWithData:方法:initWithData:预计结构的NSData *警告
警告:不兼容的Objective-C 型 '结构的NSDictionary *', 预期 '结构的NSData *' 时 传递参数1 'initWithData:' 从不同目标C型
在TRDevice.h:
@interface TRDevice : NSObject
{
NSString *name;
}
@property (nonatomic, copy) NSString *name;
-(id)initWithData:(NSDictionary *)inData;
@end
在TRDevice.m:
- (id)initWithData:(NSDictionary *)inData
{
if ((self = [super init]))
{
self.name = [inData valueForKey:TRDeviceNameKey];
}
return self;
}
而且在那里我尝试实例上述目的:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSArray *dataArray = [prefs arrayForKey:TRDevicesKey];
for (NSDictionary *data in dataArray)
{
TRDevice *device = [[TRDevice alloc] initWithData:data];
[self.devices addObject:device];
[device release];
}
此警告消失,如果我1)重命名init方法到别的东西等作为initWithDictionary:
。或2)如果我通过nil
到initWithData:
。
AFAIK NSObject不实现initWithData:方法,所以我也不会覆盖它。我不知道为什么我得到这个警告。