2011-01-15 9 views
0

Warum hat es eine "Return macht Zeiger von Integer ohne Cast" Warnung?Warnung "Rückgabe macht Zeiger aus Ganzzahl ohne Besetzung"

Ich habe ein "Person" -Objekt, das einen NSString und einen int enthält.

 
-(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; 
} 

Aus irgendeinem Grund erhält die Age-Instanzvariable eine Warnung über Zeiger. Es ist komisch und ich will wissen warum.

Antwort

1

id der Typ für ein generisches Objekt ist, und ist eigentlich ein Zeiger (obwohl Sie müssen es nicht erklären, mit der "*"). int ist kein Objekt und Sie erhalten die Warnung. Wenn Sie diese Methode verwenden möchten, können Sie versuchen, sie in einem 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; 
} 
einzuwickeln
0

int ist ein Werttyp, aber id entspricht einem beliebigen Objective-C-Zeigertyp.

Sie können die int in einer NSNumber wickeln und zurück, dass:

return [NSNumber numberWithInt:thePerson.theAge]; 
Verwandte Themen