0

NSDictionary を取る初期化子を持つクラスがあります。

-(id)initWithVector:(NSDictionary *) vectorDictionary;

NSDictionary を渡そうとすると、エラーが発生します。

'VectorClass * _strong' をパラメーター タイプ 'NSDictionary *' に送信する互換性のないポイント タイプ

コード:

// myVectorList is an array of dictionaries
for (NSDictionary *vector in self.myFielder.myVectorList)
{
    if ([vector isKindOfClass:[NSDictionary class]])
    {
        // hardcoded for testing purposes 
        if ([[vector objectForKey:HANDLE] isEqualToString:@"pt07p48u17aj75qx8n2fri9jlkrc262yt8"])
        {
            // GET THE WARNING ON PASSING "VECTOR"
            VectorClass *vector = [[VectorClass alloc] initWithVector:vector];

            [vector retrieveVectorAttributeTable];
            [vector retrieveVectorMetadataTable];
        }
    }
}

(NSDictionary *)vector を型キャストした場合、警告はありません。

ベクトルは辞書でなければならないのに、なぜ警告が表示されるのですか?

4

1 に答える 1

7

2つの異なる変数に同じ名前を使用します。最も内側の変数はVectorClass同じ行で定義された型であるため、コンパイラはそれをメソッドに渡そうとしますがinit、代わりに名前を変更します。

VectorClass *vectorC = [[VectorClass alloc] initWithVector:vector];
[vectorC retrieveVectorAttributeTable];
[vectorC retrieveVectorMetadataTable];
于 2012-10-03T19:25:05.133 に答える