nsmutablearrayを反復するときの「範囲外」エラー
-
27-09-2019 - |
質問
このループで「URL」変数にアクセスしようとするたびに、「スコープから外れた」エラーを取得するのはなぜですか?
for(NSString *url in self.winnerImageURLs) {
[mediaItemString appendFormat:@"{\"type\":\"image\",\"src\":\"%@\",\"href\":\"%@\"},", url, url];
}
「self.winnerimageurls」の非常にアイテムのクラスは、nscfstringとして戻ってくるので、Dealioがここにあるかどうかはわかりません。
私が間違っていることについてのアイデアはありますか?
ありがとう
解決
デバッガーでURL変数にアクセスすることについて話している場合、それは非常に多くのことが起こります。それ自体は問題ではありません。
他のヒント
Short Anwerは、それがそのようになるはずだということです。より長い答えはそれです NSString
クラスクラスターです。
クラスクラスター
クラスクラスターは、多くのプライベートな具体的なサブクラスを一般の抽象的なスーパークラスの下にグループ化するアーキテクチャです。この方法でのクラスのグループ化は、公開されているアーキテクチャのみを見るユーザーに単純化されたインターフェイスを提供します。しかし、舞台裏では、抽象クラスは、特定のタスクを実行するのに最も適したプライベートサブクラスを呼び出しています。
多くの一般的な Cocoa
クラスは、クラスクラスターとして実装されます NSArray
, NSString
, 、 と NSDictionary
.
他のクラスと同じように、クラスターのインスタンスを作成および対話します。ただし、舞台裏では、パブリッククラスのインスタンスを作成すると、クラスは呼び出した作成方法に基づいて適切なサブクラスのオブジェクトを返します。 (インスタンスの実際のクラスを選択することはできません。)
nsstringの例
NSString *a = @"UTF32.txt";
NSString *b = [NSHomeDirectory() stringByAppendingPathComponent:a];
NSTextStorage *storage = [[NSTextStorage alloc] initWithString:b];
NSString *c = [storage string];
a、b、cのそれぞれは(および10.5では)異なるプライベートサブクラスのインスタンスである可能性があります(実際、それぞれMac OS X v10.5では)。各オブジェクトはプライベートサブクラスのものですが NSString
, 、各オブジェクトをのインスタンスと見なすと便利です NSString
クラス。
約 クラスクラスター Apple開発者サイト: http://developer.apple.com/mac/library/documentation/cocoa/conceptual/cocoafundamentals/cocoaobjects/cocoaobjects.html#//aple_ref/doc/uid/tp40002974-ch4-sw34