2011-06-14 48 views
1

我有这样的代码:'不相容目标c类型分配' 错误

.H:

@interface ColorPickerView : UIViewController { 

HSBEditView *hsbEditView; 

} 

的.m:

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

正如我打字,这initWithFrame方法是一个建议,我按Tab键填写正确。

的问题是,最后一行在那里,一个在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

你如何实现'initWithFrame:H:S:B:'? – 2011-06-14 23:44:51

回答

3

为了避免重命名的方法,你可以投的页头:

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

这会沉默的编译器警告。

相关问题