为什么它有一个“返回从没有强制转换的整数中生成指针”警告?
我有一个“Person”对象,其中包含NSString和int。
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { Person *thePerson = [theList objectAtIndex:row]; if (tableColumn == nameTableColumn) { return thePerson.theName; } else if (tableColumn == ageTableColumn) { return thePerson.theAge; } else return nil; }
由于某种原因,Age实例变量会收到有关指针的警告。这很奇怪,我想知道为什么。
答案 0 :(得分:1)
id
是泛型对象的类型,实际上是一个指针(即使您不必使用'*'声明它)。 int
不是对象,因此您会收到警告。如果您想使用此方法,可以尝试将其包装在NSNumber
:
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
Person *thePerson = [theList objectAtIndex:row];
if (tableColumn == nameTableColumn)
{
return thePerson.theName;
}
else if (tableColumn == ageTableColumn)
{
return [NSNumber numberWithInt:thePerson.theAge];
}
else
return nil;
}
答案 1 :(得分:0)
int
是一个值类型,但id
对应于任意Objective-C指针类型。
您可以将int
打包在NSNumber
中并返回:
return [NSNumber numberWithInt:thePerson.theAge];