2011-05-04 150 views
0

我想这是非常基础的。铸造问题(或者不是铸造)

我从xCode得到两个相关的警告。两者都表示我正在试图从整数中构造一个没有强制转换的指针。我如何满足xCode?

这是我的代码:

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

注:currentPageCounter是NSUInteger currentPageCounter;

我的方法是这样的:

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

} 

我应该怎么做强制转换?

回答

2

你正在传递一个指向整数位置:

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

更改此为:

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

,并在选择呼叫,直接通过currentPageCounter:

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

withReference正在等待int *,但您传递的是int。这是一个潜在的错误,可能会导致程序崩溃。看来你不需要在方法中指向整数的指针,只需传递一个整数就可以了。

// 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

传入的演员应该是(int)而不是(int*)。当你登录newTabReference使用%d而不是%@