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

And*_*rew 3 iphone pointers class objective-c uiview

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

typedef enum {
    UIIconTypeCustom = 0,
    UIIconTypeStandard,
} UIIconType;
Run Code Online (Sandbox Code Playgroud)

.

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

...

}
Run Code Online (Sandbox Code Playgroud)

这就是它遇到问题的一条线:

[iconView addIconWithType:UIIconTypeStandard];
Run Code Online (Sandbox Code Playgroud)

Jos*_*ell 9

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

-(void)addIconWithType:(UIIconType *)iconType;
// Takes a pointer to a UIIconType as argument
Run Code Online (Sandbox Code Playgroud)

你传递一个整数:

[iconView addIconWithType:UIIconTypeStandard];
// UIIconTypeStandard is not a pointer to a UIIconType
Run Code Online (Sandbox Code Playgroud)

将方法定义更改为:

-(void)addIconWithType:(UIIconType)iconType;
Run Code Online (Sandbox Code Playgroud)

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

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