我不理解从 Apple 的 Master Detail Template 中获取的以下方法中的 Objective-C:
- (void)insertNewObject:(id)sender
{
if (!_objects)
{
_objects = [[NSMutableArray alloc] init];
}
[_objects insertObject:[NSDate date] atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0
inSection:0];
[self.tableView insertRowsAtIndexPaths: @[indexPath]
withRowAnimation: UITableViewRowAnimationAutomatic];
}
代码位于 MasterViewController.m 文件中。我的困惑点是: - 是什么@[indexPath]
意思?这是一种将某些东西制作成数组的语法吗?我只遇到了“@”作为表示字符串的字符。澄清:我了解什么是 NSIndexPath 以及它是如何工作的。我不熟悉将对象放在 @ 字符前面的括号中的语法。这会使某些东西成为数组吗?如果我有几个 NSIndexPaths 怎么办?我可以以这种方式将它们全部加载到数组中吗@[indexPath1, indexPath2, indexPath3] 这适用于从 NSObject 派生的任何东西吗?结果总是一个数组吗?这在语言中记录在哪里 - 这个语言功能叫什么(所以我可以查一下)?
- 方法 insertRowsAtIndexPaths:withRowAnimation 似乎指定了将某些内容放入表中的位置,但并不完全指定要放入的内容。当向表中插入项目时,该方法如何知道要使用哪个对象作为数据源。委托和数据源的关系在 xib 中指定,因此很明显 MasterViewController 将处理数据与表的关联,但似乎与任何
NSMutable *_objects;
地方指定的数组和表没有任何关系。
感谢您帮助解释这一点,因为很明显我错过了一些非常基本的东西。