0

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

for (int i=0; i < kNumberOfTitles; ++i) {
    UILabel * aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, i*10, 100, 30)];
    [_titles addObject:aLabel];
    NSAssert([_titles objectAtIndex:0] != nil, @"wrong 1");
}
NSAssert([_titles objectAtIndex:0] != nil, @"wrong 2");
((UILabel *)[_titles objectAtIndex:0]).text = @"Tel";
((UILabel *)[_titles objectAtIndex:1]).text = @"Add";
for (UILabel* aLabel in _titles) {
    [self.view addSubview:aLabel];
}

最初の NSAssert の前に、新しいラベルを追加して取得しただけで、それが nil であることがわかりました。どうしたの?

4

1 に答える 1

2

問題は、実際には配列を作成していないため、それnilがインスタンス変数である場合 (または ARC を使用している場合)、または ARC を使用しない場合に単純なローカル変数である場合はガベージ値であると思われます。あなたがしなければならない

_titles = [[NSMutableArray alloc] init];

配列にアイテムを追加しようとする前に。

于 2012-09-16T08:09:33.603 に答える