有谁知道我为什么会收到以下错误:
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;
{
id result = (Possession *)[possessions objectAtIndex:[indexPath row]];
[result setRowSwapped:TRUE]; //Passing argument makes pointer from integer without a cast
}
//This is the property on the possession object. I just want to set it as true thats it
@property (nonatomic) bool *rowSwapped;
答案 0 :(得分:1)
TRUE是一个数字(等于1的值),并且setRowSwapped似乎期望某种指针作为参数。因此编译器正在将int值1转换为指针,这是一个警告,因为这几乎不正确,如果它是正确的并且你知道你在做什么,你使用了一个显式的强制转换,这也避免了警告。你没有使用强制转换,你可能期望该方法需要一个布尔值作为参数,这似乎是不正确的。
BTW,因为这是Objective-C,你不应该在Objective-C中使用TRUE / FALSE,而是使用YES / NO。区别在于TRUE / FALSE类型为bool(全部小写,与Mac上的_Bool或boolean_t相同),并且通常类型为int和4字节(至少在PPC和Intel上,对于其他Apple设备可能不是这样) ,像iPad)。 YES和NO的类型为BOOL(全部为大写),此类型在PPC上为4字节,在Intel上为1字节。因此bool和BOOL并不总是相同的,并且在一些非常罕见的情况下,这确实会引起问题。所以你不应该混合它们。在Obj-C代码中使用BOOL和YES / NO,在C代码中,使用bool,boolean_t或_Bool和TRUE / FALSE。
答案 1 :(得分:0)
您需要向我们展示您的setRowSwapped:
例程的定义,但我认为您在定义和使用方面存在不匹配。您是否将该方法设为BOOL *
参数?无论如何,输入变量id
有点奇怪 - 你在这方面的目标是什么?
答案 2 :(得分:0)
我使用的是bool而不是BOOL。