(id) 引数を取る init メソッドがあります。
-(id) initWithObject:(id) obj;
私はそれを次のように呼ぼうとしています:
[[MyClass alloc] initWithObject:self];
しかし、XCode は、引数が「明確な Objective-C 型」であることについて不平を言っています (通常、型の不一致または間接エラーのレベルを示します)。
self を (id) に明示的にキャストすると、警告は消えます。どちらの場合でも、コードは期待どおりに実行されます。興味深いことに、次の行で、id を受け取る別のメソッドに self を渡していますが、これは正常に機能します。
何か微妙なものが欠けているのではないかと思っています-それともコンパイラの特異性ですか?
それが必要な理由がはっきりするまで、キャストするだけでは完全に快適ではありません。
[編集]
追加のコードを提供するよう求められました。他に関連するものがたくさんあるかどうかはわかりません。これが呼び出しを行う実際のコードです。それ自体が init メソッド内にあることに注意してください。initWithSource
警告を出しているのは への呼び出しです:
-(id) initWithFrame:(CGRect) frame
{
self = [super initWithFrame: frame];
if( self )
{
delegate = nil;
touchDelegate = [[TBCTouchDelegate alloc] initWithSource:self];
[touchDelegate.viewWasTappedEvent addTarget: self action:@selector(viewWasTapped:)];
}
return self;
}
そして、呼び出される init メソッドは次のとおりです。
-(id) initWithSource:(id) sourceObject
{
self = [super init];
if (self != nil)
{
// Uninteresting initialisation snipped
}
return self;
}