我有這個簡單的形狀類:如何擺脫「不兼容的指針類型」警告?
Shape.h
#import <Foundation/Foundation.h>
@interface Shape : NSObject
-(id)initWithColor:(UIColor *)color;
+(instancetype)shapeWithColor:(UIColor *)color;
@end
和Shape.m
#import "Shape.h"
@interface Shape()
@property (nonatomic, strong) UIColor *color;
@end
@implementation Shape
-(id)init
{
return [self initWithColor:[UIColor whiteColor]];
}
-(id)initWithColor:(UIColor *)color
{
self = [super init];
if (self)
{
_color = color;
}
return self;
}
+(instancetype)shapeWithColor:(UIColor *)color
{
return [[self alloc] initWithColor:color]; // I get the warning here
}
@end
在便利構造函數的返回語句,我得到以下警告:
不兼容的指針類型將'UIColor *'發送到類型爲的參數'CIColor *'
我在做什麼錯在這裏?我知道我可以寫return [[Shape alloc] initWithColor:color];
,但在那種情況下,如果我使用Shape
而不是self
,我會對我的子類造成問題,對吧?
您的代碼看起來正確。如果你用CMD點擊'initWithColor:'它指向哪裏? –
可能是bot與這個問題有關,但是你也可以在'init'方法上使用'instancetype'。這是實際的代碼?你有沒有遺漏任何東西? –
@GabrielePetronella:'instancetype'實際上被推斷爲'init ...' –