Big Nerd Ranch iOS ガイドを読んでいて、このコードについて質問があります:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"];
}
BNRItem *p = [[[BNRItemStore sharedStore] allItems] objectAtIndex:[indexPath row]];
[[cell textLabel] setText:[p description]];
return cell;
}
BNRItemStore は単なるデータ ストア オブジェクトであり、イニシャライザ メソッドで既に 5 つの BNRItem オブジェクトを追加しています。次に、文字列の説明が UI に出力されます。私の混乱は、特にこの行に関するものです。
BNRItem *p = [[[BNRItemStore sharedStore] allItems] objectAtIndex:[indexPath row]];
私がこの行を理解する方法は、 objectAtIndex: は BNRItemStore 内の項目を取得し、それらを変数に割り当てるだけだということです。私が持っている質問はこれです:
objectAtIndex: 5 つのオブジェクトすべてを変数 *p に引数 [indexPath 行] で返す方法は? 私は、indexPath オブジェクトが 1 つのセクションと 1 つの行を保持するという印象を受けました。したがって、row プロパティは単一の行インデックスを返すだけです。ここでは、配列がループされ、その 5 つの内容が変数に返され、UI に出力されているように見えます。それとも、それは起こっていることではありませんか?行プロパティは実際にここで何をしていますか?