2009-08-06 10 views
0

これは私を困惑させました。NSArray、最後のオブジェクトは常に無効

NSArrayとinitWithObjectsをビルドします。最後の要素は決して本当に割り当てません。実際、コード内の次のallocは、最後の要素から指し示されたものと同じメモリアドレスをとります。

コードは次のとおりです。

coordArr = [[NSArray alloc]initWithObjects: 
    [NSValue valueWithCGPoint:CGPointMake(200.0,40.0)], 
    [NSValue valueWithCGPoint:CGPointMake(56.0,290.0)], 
    [NSValue valueWithCGPoint:CGPointMake(99.0,35.0)], 
    [NSValue valueWithCGPoint:CGPointMake(222.0,333.0)], 
    [NSValue valueWithCGPoint:CGPointMake(60.0,60.0)], 
    [NSValue valueWithCGPoint:CGPointMake(105.0,299.0)], 
    nil]; 

デバッガを示しています。あなたが任意のアイデアを持っている場合は、それが役立つだろう

alt text http://sergepress.com/temp/NSArray.png

。 ありがとう!

+0

このエラーを再現しようとしましたができませんでした。周囲のコードをもっと投稿できますか? – pgb

+0

ここに問題があるとは言えません... 私は[[[NSArray ....]] retain]を追加しました。無駄に。 の#import @interfaceウェイポイント:UIViewの{ \tにNSArray * coordArr。 } @property(nonatomic、retain)NSArray * coordArr; @end @implementationウェイポイント @synthesize coordArr; - (ID)initWithFrame:(CGRect)フレーム{ 場合(自己= [スーパーinitWithFrame:フレーム]){ \t \t self.backgroundColor = [UIColor clearColor]。 //透明な背景 \t \t coordArr = ...; } return self; } – SYF970

+0

- (void)viewDidLoad { \tウェイポイント* wpts = [[Waypoints alloc] initWithFrame:CGRectMake(0,0,320,480)]; \t self.waypoints = wpts; \t [self.view addSubview:waypoints]; \t [wpts release]; } – SYF970

答えて

1

いつもデバッガを信頼していませんが、私はデバッガが変数のwhatsについて間違っていることが多いのですが、あなたのケースでは本当にisntなので、その番号をNSLogで確認し、出力するかどうか確認してください。

+0

おかげでダニエル、私はあなたが右のためだ願っていますこれらのタイプのバグは確かに私のワークフローを妨げています...私がこの点に至りましたのは、配列を繰り返しながらその値でアプリがクラッシュすることでした。 NSLogを使ってクラスや値を読み込むと同じことが起こります。私はその後テストのためにplistsに移ったが、私はいつかこの問題を理解することができたら、本当に安心できるだろう。再度、感謝します。 – SYF970

関連する問題