1

配列の要素に対してアクションを実行しようとしていますが、コードが機能しない理由が本当にわかりません:

ここに私の.hがあります:

@interface ViewController : UIViewController
{
    NSArray *tableauScore;
    UILabel * modificationScore;
}

@property (weak, nonatomic) IBOutlet UILabel *nom1;
@property (weak, nonatomic) IBOutlet UILabel *nom2;
@property (weak, nonatomic) IBOutlet UILabel *nom3;
@property (weak, nonatomic) IBOutlet UILabel *nom4;
@property (weak, nonatomic) IBOutlet UILabel *bsc1;
@property (weak, nonatomic) IBOutlet UILabel *bsc2;
@property (weak, nonatomic) IBOutlet UILabel *bsc3;
@property (weak, nonatomic) IBOutlet UILabel *bsc4;

@end

私の .m:

tableauScore = [NSArray arrayWithObjects:nom4, nom3, nom2, nom1, bsc1, bsc2, bsc3, bsc4, nil];
for(int i = 0; i < 8; i++)
            {
                modificationScore = [tableauScore objectAtIndex:i];
                modificationScore.hidden = NO;
                modificationScore.center = CGPointMake(modificationScore.center.x, modificationScore.center.y -40);
            }

問題は、「modificationScore = [tableauScore objectAtIndex:i];」にスレッド ポイントがあることです。行と私は理由がわかりません。たくさんのトピックを見ましたが、誰も助けてくれません。あなたの誰かがアイデアを持っていますか?

ありがとう!

4

4 に答える 4

1

「スレッドポイント」とは、クラッシュを意味すると思いますか?その場合、配列に追加するプロパティの 1 つはおそらくnil.

[tableauScore count]ループする前に、配列 ( ) 内の要素の数を確認してください。8つあると仮定しないでください。または、さらに良いことに、次の構文を使用してすべての要素をループします。

for (a in tableauScore) {
于 2013-01-07T11:13:19.300 に答える
0

[NSArray arrayWithObjects:]最初に指定されたものまで NSArray のみを作成するnilため、UILabels の 1 つが である場合、nil想定どおりにサイズ 8 の配列は取得されず、その時点までの UILabels を含む配列のみが取得されます。

ハードコーディングされたループサイズがあるため、おそらく配列の外側でインデックスを作成することになります。

于 2013-01-07T11:19:05.790 に答える
0

modificationScore本当に必要ない場合は、グローバルに定義しません。

私はするだろう:

for(UILabel *tempLabel in tableauScore)
    {
        tempLabel.hidden = NO;
        tempLabel.center = CGPointMake(modificationScore.center.x, modificationScore.center.y -40);
    }

center変更する必要がある を変更して何を達成したいのかわかりません

于 2013-01-07T11:09:35.127 に答える
-3

内のオブジェクトを変更する場合、は不変であるため、はtableauScore使用できません。NSArrayNSArray

を使用しNSMutableArrayてラベルを再構成し、 を使用replaceObjectAtIndex:withObject:して配列内のラベルを変更します。

于 2013-01-07T11:06:58.793 に答える