警告“返回从没有强制转换的整数生成指针”

时间:2011-01-15 11:31:04

标签: objective-c

为什么它有一个“返回从没有强制转换的整数中生成指针”警告?

我有一个“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实例变量会收到有关指针的警告。这很奇怪,我想知道为什么。

2 个答案:

答案 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];