使用我自己的typedef枚举,获取'从整数中生成指针而不进行强制转换'

时间:2011-05-17 17:53:12

标签: iphone objective-c class pointers uiview

我输入的错误是'Assignment从没有强制转换的整数生成指针'。这是我的代码:

typedef enum {
    UIIconTypeCustom = 0,
    UIIconTypeStandard,
} UIIconType;

-(void)addIconWithType:(UIIconType *)iconType {

...

}

这就是它遇到问题的路线:

[iconView addIconWithType:UIIconTypeStandard];

2 个答案:

答案 0 :(得分:9)

您的方法有一个指针作为参数:

-(void)addIconWithType:(UIIconType *)iconType;
// Takes a pointer to a UIIconType as argument

你传给它一个整数:

[iconView addIconWithType:UIIconTypeStandard];
// UIIconTypeStandard is not a pointer to a UIIconType

将方法定义更改为:

-(void)addIconWithType:(UIIconType)iconType;

此外,定义您自己的枚举,类或其他任何前缀为UI的内容。该前缀由Apple保留,您将通过使用它来为自己造成无意义的麻烦。使用您的姓名首字母或公司或项目的首字母。

几乎所有Objective-C方法都带有星号参数的原因是当你使用对象时,对象停留在内存中的一个位置,你只需要传递指针那个对象。这就是MyClass *指示的内容 - 指向MyClass类型对象的指针。指针为您提供对象在内存中的位置的地址,这样您就可以避免在想要使用它时将整个对象从一个地方移动到另一个地方。在这种情况下,你想传递给方法的东西不是一个对象,而是一个简单的整数,所以你可以直接传递整数。

答案 1 :(得分:1)

变化:

-(void)addIconWithType:(UIIconType *)iconType

为:

-(void)addIconWithType:(UIIconType)iconType

您的方法需要一个指向UIIconType的指针,但您尝试按值传递它。