変数値に奇妙な問題があります。これはコードです (クラスメソッドの一部です):
MyAppDelegate *pDelegate = [[UIApplication sharedApplication] delegate];
SomeDictionaryData *appData = [pDelegate.theData retain];
NSLog(@"my instance var: %@",cardIndex); // outputs "my instance var: 4"
NSDictionary *currentCard = [[NSDictionary alloc] initWithDictionary:[appData.cards objectAtIndex:cardIndex]];;
// the above line breaks the app
[currentCard release];
[appData release];
objc_exception_throw
ブレークポイントでデバッガを使用しています。そこで受け取った入力は、objectAtIndex
値 = 13760640 として表示されます。appData のcards
属性は でNSArray
あり、明らかに 1000 万以上のアイテムがないため、範囲外のエラーが発生します。キャストを試みました(int)cardIndex
が、より良い結果は得られませんでした。奇妙なことは、他のクラスの同様のコードが正常に機能することです。
これは、アプリ全体で使用したいデータであるため、AppDelegate で初期化され、theData
別の ViewController によってアクセスされる Model クラスがあります。このエラーは、他のViewControllerへのアクセスが1回成功した後に表示されます(これも保持/解放します)。
どんな助けでも大歓迎です。