Property type 'id<STClockDelegate>' is incompatible with type 'id<SKSceneDelegate> _Nullable' inherited from 'SKScene' ってなんだよ

@property (nonatomic, assign) id<STClockDelegate> delegate;

h ファイルに property を定義していたら、謎の警告が・・・

Property type 'id<STClockDelegate>' is incompatible with type 'id<SKSceneDelegate> _Nullable' inherited from 'SKScene'

SKSceneDelegate の sub class である STClockDelegate を書いている最中。よくわかんねぇなぁ。SKSceneDelegate でも同名 property 定義されてんだけど?ってことか?

以下のように、SKSceneDelegate も入れてやったら警告でなくなった。

@property (nonatomic, weak) id<STClockDelegate, SKSceneDelegate> delegate;

 

と思ったら、もう一個警告が・・・@dynamic 使えみたいな感じのこと書いてある。しょうがないので m ファイルに以下追加。

@implementation STClock

@dynamic delegate;

 

@dynamic ってなんだよ?と調べたら、@property 宣言すると自動的に getter, setter が定義されるが、@dynamic を宣言すると getter, setter が定義されないらしい。親クラスで定義されているから、紛らわしいから、サブクラスでは定義しなくていいよ、ってことかね。

ってか、警告出るくらいなら自動で直してくれよ。> Xcode