私はこの単純な 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
便利なコンストラクターの return ステートメントで、次の警告が表示されます。
タイプ「CIColor *」のパラメーターに「UIColor *」を送信する互換性のないポインタータイプ
ここで何が間違っていますか?私は書くことができることを知っていますreturn [[Shape alloc] initWithColor:color];
が、その場合、Shape
代わりにを使用すると、サブクラスに問題が発生しself
ますよね?