【问题标题】:Warning "Return makes pointer from integer without a cast"警告“返回使指针从整数不进行强制转换”
【发布时间】:2011-01-15 11:31:04
【问题描述】:

为什么会出现“从整数返回指针而不进行强制转换”的警告?

我有一个“Person”对象,它包含一个 NSString 和一个 int。

-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 人 *thePerson = [theList objectAtIndex:row]; if (tableColumn == nameTableColumn) { 返回人名; } else if (tableColumn == ageTableColumn) { 返回 thePerson.theAge; } 别的 返回零; }

出于某种原因,Age 实例变量会收到有关指针的警告。这很奇怪,我想知道为什么。

【问题讨论】:

    标签: objective-c


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

      int 是值类型,但id 对应于任意 Objective-C 指针类型。

      您可以将int 包装在NSNumber 中并返回:

      return [NSNumber numberWithInt:thePerson.theAge];
      

      【讨论】:

        猜你喜欢
        • 2012-10-30
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 2021-07-12
        • 2020-05-30
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        相关资源
        最近更新 更多