'不兼容的objective-c类型分配'错误

时间:2011-06-14 23:42:40

标签: iphone objective-c

我有这段代码:

·H:

@interface ColorPickerView : UIViewController {

HSBEditView *hsbEditView;

}

的.m:

hsbEditView = [[HSBEditView alloc] initWithFrame:CGRectMake(0, 0, 280, 46) H:h S:s B:b];

正如我正在输入的那样,这个initWithFrame方法是一个建议的方法,我按下了标签以正确填写它。

问题是,m文件中的最后一行会收到此警告:

Incompatible objective-c types assigning '*', expected '*'
Incompatible objective-c types assigning 'struct HEXEditView *', expected 'struct HSBEditView *'

HEXEditView是我的另一个视图,但是你可以清楚地看到,在这一行中没有提到它。

编辑:

如此实施:

-(HSBEditView *)initWithFrame:(CGRect)frame H:(float)hue S:(float)saturation B:(float)brightness {

    [super initWithFrame:frame];

...

   return self;
}
编辑:找到解决方案!我不得不将它们重命名为稍微不同的东西,因为该方法与另一个类中的init方法具有相同的名称。我仍然想知道如何正确解决这个问题(如果有另一种方法),因为重命名init方法并不理想?

1 个答案:

答案 0 :(得分:3)

为避免重命名方法,您可以转换alloc:

hsbEditView = [(HSBEditView *)[HSBEditView alloc] initWithFrame:CGRectMake(0, 0, 280, 46) H:h S:s B:b];

这会使编译器警告静音。