我不理解以下方法中的Objective-C取自Apple的Master Detail Template:
- (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派生的任何内容?结果总是一个数组吗?这在语言中记录了什么 - 这个语言功能叫什么(所以我可以查找)?
NSMutable *_objects;
数组和任何地方指定的表没有任何关系。 感谢您帮助解释这一点,因为很明显我错过了一些非常基本的东西。
答案 0 :(得分:1)
这是制作数组
的语法吗?
是。在现代的Objective-C中,正如最新的clang
编译器所理解的那样,还有一些@
指令可以轻松创建硬编码对象:
@[object1, object2]
创建一个NSArray;
@{@"key1": value1, @"key2": value2}
创建一个NSDictionary,
@"hello world"
通常和
一起创建一个NSString@1, @2, @YES, @3.1415927
分别创建NSNumber实例。
在将项目插入表格时,该方法如何知道将哪个对象用作数据源。
它使用当前在调用它的表视图上设置的数据源。