Iphone 使用我自己的typedef枚举,获取';从不带强制转换的整数生成指针';
错误是“赋值从整数生成指针而不强制转换”。这是我的密码:Iphone 使用我自己的typedef枚举,获取';从不带强制转换的整数生成指针';,iphone,objective-c,class,pointers,uiview,Iphone,Objective C,Class,Pointers,Uiview,错误是“赋值从整数生成指针而不强制转换”。这是我的密码: typedef enum { UIIconTypeCustom = 0, UIIconTypeStandard, } UIIconType; 这是它遇到问题的线路: [iconView addIconWithType:UIIconTypeStandard]; 更改: -(void)addIconWithType:(UIIconType *)iconType 致: 您的方法需要指向UIIconType的指针,但您正在
typedef enum {
UIIconTypeCustom = 0,
UIIconTypeStandard,
} UIIconType;
这是它遇到问题的线路:
[iconView addIconWithType:UIIconTypeStandard];
更改:
-(void)addIconWithType:(UIIconType *)iconType
致:
您的方法需要指向UIIconType的指针,但您正在尝试按值传递它。您的方法有一个指针作为参数:
-(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
的东西。这个前缀是苹果公司保留的,使用它会给你自己带来无意义的麻烦。使用您的姓名首字母或您公司或项目的姓名首字母
几乎所有Objective-C方法都有带星号的参数的原因是,当您使用对象时,该对象保留在内存中的一个位置,您只需传递指向该对象的指针。这就是MyClass*
所指示的——指向MyClass
类型的对象的指针。指针为您提供对象在内存中的位置地址,这样您就可以避免在需要使用对象时将整个对象从一个位置移动到另一个位置。在这种情况下,要传递给方法的不是对象,而是一个简单的整数,因此可以直接传递整数
[iconView addIconWithType:UIIconTypeStandard];
// UIIconTypeStandard is not a pointer to a UIIconType
-(void)addIconWithType:(UIIconType)iconType;