2012-03-09 6 views
3

私の書き込みのようないくつかのコード:なぜiOS 5.1シミュレータでデバッガlldbはオブジェクトがnilであると言うのですか?

_myDataArray = [[NSMutableArray alloc] initWithCapacity : kNum]; 

for (int i=0; i<kNum; i++) { 
    MyData *myData = [[[MyData alloc] init] autorelease]; 
    pageData.title = [NSString stringWithFormat:@"No.%d line", i]; 
    [_myDataArray addObject:myData]; 
} 

ありのiOS 4.3シミュレータには問題はありませんが、lldbデバッガは_myDataArrayは、iOSの5.0/5.1シミュレータで

(lldb) po _myDataArray 
(NSMutableArray *) $2 = 0x00000000 <nil> 

nilであると言い、Xcodeの4.3.1が、ビューの結果は正しいです。

Xcode 4.3.2ではこの問題が修正されています。

+2

どの時点でlldbは_myDataArrayがnilであると言いますか? NSLog(@ "_ myDataArrayは%p"、_myDataArray); 'をコード内で使用すると、それもnilとして表示されますか? ARCを使用していますか? 'kNum'は何と定義されていますか? –

+0

NSLog print _myDataArrayはnilではありません。私は問題があると思う:インスタンス変数NSMutableArray * _myPageDataArrayを.hファイルで作成しますが、それは正しくありません。 .mファイルで作成する必要があります。 – smoothdvd

+1

これには解決策がありますか?私はちょうどこれを実行し、変数定義をmファイルに移動しようとしましたが、そのトリックは行いません。何かが重大に間違っているようです。 – MagicSeth

答えて

0

4.3.1 Xcodeを使用した5.0と5.1のシミュレータで同じ問題があることを確認できます。 Xcode 4.2.1および5.0シミュレータと同じコードには問題はありません。変更可能な配列が.hファイルの中にある順番で割り当てられていることに気付きました。つまり、配列が順不同で割り当てられるため、デバッグモードで.mコードをステップ実行するのは面白いです。溶液? Appleが問題を修正してバグなどを報告するのを待ちます。

+0

変数を@privateに設定しよう – smoothdvd

+0

Xcode 4.3.2ではこの問題が修正されています。 – smoothdvd

0

iDeviceとSimulatorの両方で、iOS 4.3,5.0、および5.1と全く同じ問題を確認できます。 Xcode 4.3.1から4.3.2へのアップデートでは、ここで問題は解決されません...

スキーム設定でGDBデバッガに戻って問題を解決します。

0

5.0と5.1のシミュレータのすべてのプロジェクトで同じ問題が発生しています。 Xcode 4.3.3はこれを私のために修正しました。