analyzedPxDictionary
一連のPixelオブジェクト(作成したカスタムクラス)を含むNSMutableDictionaryがあります。特に、Pixelオブジェクトには。と呼ばれるNSArrayプロパティが含まれていますrgb
。その配列には常に3つのNSNumberオブジェクトが含まれ、整数値はピクセルのrgb値に対応します。
私は現在、analyzedPxDictionary
高速列挙を使用して列挙しようとしています。ただし、ループ内からPixelオブジェクトのプロパティにアクセスできないようです。rgb
ドット構文を使用してアクセスできるように、合成プロパティであると宣言しました。しかし、ループ内からそうしようとすると、プログラムがクラッシュし、次のようなエラーが発生します。
'-[NSCFString rgb]: unrecognized selector sent to instance 0xa90bb50'
そのエラーを生成するコードの例を次に示します。
for (Pixel *px in analyzedPxDictionary) {
printf("r: %i, g: %i, b: %i",[[px.rgb objectAtIndex:0] integerValue], [[px.rgb objectAtIndex:1] integerValue], [[px.rgb objectAtIndex:2] integerValue]);
}
printf
を調べるために、その線にブレークポイントを設定してみましたpx
。そのプロパティがNSArrayのインスタンスとして正しく記述されているrgb
場合、1つとしてリストされていますが、オブジェクトが含まれていないようです。
rgb
正しく初期化していると思います。説明するために、次のコードを検討してください。
NSString *key;
for (Pixel *px in analyzedPxDictionary) {
key = [px description];
}
Pixel *px = [analyzedPxDictionary objectForKey:key];
printf("\nr: %i, g: %i, b: %i",[[px.rgb objectAtIndex:0] integerValue], [[px.rgb objectAtIndex:1] integerValue], [[px.rgb objectAtIndex:2] integerValue]);
これにより、正しい値がコンソールに正常に出力されます。
では、なぜループrgb
内からプロパティにアクセスできないのですか?forin