我有这段代码:
·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方法并不理想?
答案 0 :(得分:3)
为避免重命名方法,您可以转换alloc:
hsbEditView = [(HSBEditView *)[HSBEditView alloc] initWithFrame:CGRectMake(0, 0, 280, 46) H:h S:s B:b];
这会使编译器警告静音。