我得到一個奇怪的警告與我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:方法,所以我也不會覆蓋它。我不知道爲什麼我得到這個警告。