0

この配列には質問オブジェクトが含まれている配列が1つあるので、ここで配列の位置を変更する必要があります

Question *que=[[Question alloc]init];

que=[myarray objectAtIndex:1];

Question *que1=[[Question alloc]init];
que1=[myarray objectAtIndex:2];

here i need to inter change objects each other some 

[que1 setValue: que.name forKey:@"Name"];

[myarray relplaceObjectAtIndex:2 withObject:que1];

同じobjectValuesの値を設定する正しい方法ですか

鍬が値を交換できるように案内してください。

よろしくお願いします

4

3 に答える 3

1

ここでのコードには重大な問題があります。

  1. この文:

    Question *que = [[Question alloc] init];
    

    新しいQuestionインスタンスを割り当て、それを変数に割り当てますque。あなたがするとき:

    que = [myarray objectAtIndex:1];
    

    割り当てたばかりのインスタンスを上書きし、Questionメモリリークを効果的に発生させています(解放したことがないため)。ARCを使用している場合、これは問題にはなりませんが、ARCの有無にかかわらず、それは無意味であるため、注意が必要です。これを2回行いました。1回はのためにque、もう1回はのためque1です。実際に新しいインスタンスを割り当てて初期化する必要はないので、次のQuestionようにするだけです。

    Question *que = [myarray objectAtIndex:1];
    
  2. オブジェクトへの参照を取得し、Questionそれをに割り当てますque1。次に、それを変更して、配列に戻します。Question配列は、で取得したのと同じインスタンスへの参照をすでに保持しているため、これは無意味ですobjectAtIndex:

  3. あなたはあなたがやろうとしていることを本当に説明していません。コード全体は基本的に次のようになります。

    [[[myarray objectAtIndex:2] setValue:[[myarray objectAtIndex:1] name] forKey:@"Name"]; 
    
于 2012-05-02T04:24:40.353 に答える
0

あなたのコードはあなたが示したものであなたが意図したように機能するはずです。注意すべきいくつかのポイント:

  1. あなたmyarrayNSMutableArray
  2. ここにタイプミスがありrelplaceObjectAtIndex:2ます。replaceObjectAtIndex
  3. 配列はインデックス0から始まります。これは、ご存知のとおりです。
于 2012-05-02T04:08:49.467 に答える
0

最初にNSMutableArrayオブジェクトを使用して、NSArrayではなく保持します

それから。

オブジェクトへのポインタのみを保持している1つの主要なことを理解する必要があります。アレイがそれを管理しています。配列内のオブジェクトにアクセスする前にオブジェクトを作成しました。メモリリークが発生することはありません。配列からのみオブジェクトにアクセスする必要があります。

Question * que1=[myarray objectAtIndex:1];
[que1 retain];
[myarray removeObjectAtIndex:1];

Question * que2=[myarray objectAtIndex:2];
[que2 retain];
[myarray removeObjectAtIndex:2];

ARCを使用しておらず、アレイがオブジェクトの唯一の所有者である可能性があります。したがって、配列からオブジェクトを削除すると、オブジェクト全体が解放される可能性があります

[myarray insertObject:que2 atIndex:1];
[myarray insertObject:que1 atIndex:2];

これは、オブジェクトを任意の位置に配置するためのサンプルです。クラス参照の読み取りNSMutableArray

于 2012-05-02T04:14:24.420 に答える