2011-05-04 4 views
0

Je suppose que c'est très basique.Problèmes de casting (ou plutôt de non-casting)

Je reçois deux avertissements connexes de Xcode. Tous les deux disent que j'essaye de faire un pointeur d'entier sans moulage. Comment puis-je satisfaire xCode?

Ceci est mon code:

int tempCurrentPage = currentPageCounter; 
[self tabAdd:@"New tab!" inColour:@"Red" withReference:tempCurrentPage]; 

Note: currentPageCounter est un NSUInteger currentPageCounter;.

Ma méthode ressemble à ceci:

-(void)tabAdd:(NSString *)newTabTitle inColour:(NSString *)newTabColour withReference:(int *)newTabReference 
{ 

    NSLog(@"#string about to be added:%@", newTabTitle); 
    [[[self.myLibrary objectAtIndex:currentBookNumber] tabTitles] addObject:newTabTitle]; 

    NSLog(@"#string about to be added:%@", newTabColour); 
    [[[self.myLibrary objectAtIndex:currentBookNumber] tabColours] addObject:newTabColour]; 

    NSLog(@"#string about to be added:%@", newTabReference); 
    [[[self.myLibrary objectAtIndex:currentBookNumber] tabReference] addObject:[NSNumber numberWithInteger:newTabReference]];  

} 

Comment dois-je faire un casting?

Répondre

2

vous passez un pointeur à l'entier à:

-(void)tabAdd:(NSString *)newTabTitle inColour:(NSString *)newTabColour withReference:(int *)newTabReference 

Modifier ce pour:

-(void)tabAdd:(NSString *)newTabTitle inColour:(NSString *)newTabColour withReference:(NSUInteger)newTabReference 

et dans l'appel de sélection, passer le currentPageCounter directement:

[self tabAdd:@"New tab!" inColour:@"Red" withReference:currentPageCounter]; 
3

withReference attend un int *, mais vous transmettez un int. Ceci est un bug potentiel et peut bloquer votre programme. Il semble que vous n'avez pas besoin d'un pointeur sur integer dans la méthode, il suffit de passer un nombre entier.

// remove the pointer for newTabRefenerce 
-(void)tabAdd:(NSString *)newTabTitle inColour:(NSString *)newTabColour withReference:(int)newTabReference 

// newTabReference is integer, do use %d. %@ is for NSString 
NSLog(@"#string about to be added:%d", newTabReference); 
1

Le casting entrant devrait être (int) et non (int*). Et lorsque vous vous connectez newTabReference connectez-vous en utilisant %d et non %@.