无法从Apple模板中读取此代码

时间:2012-11-30 19:42:54

标签: objective-c datasource

我不理解以下方法中的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派生的任何内容?结果总是一个数组吗?这在语言中记录了什么 - 这个语言功能叫什么(所以我可以查找)?

  • 方法insertRowsAtIndexPaths:withRowAnimation似乎指定了将某些东西放入表中的位置,但不确定要放入什么。在将项插入表时,该方法如何知道将哪个对象用作数据源。委托和数据源关系在xib中指定,因此很明显MasterViewController将处理数据与表的关联,但似乎与NSMutable *_objects;数组和任何地方指定的表没有任何关系。

感谢您帮助解释这一点,因为很明显我错过了一些非常基本的东西。

1 个答案:

答案 0 :(得分:1)

  

这是制作数组

的语法吗?

是。在现代的Objective-C中,正如最新的clang编译器所理解的那样,还有一些@指令可以轻松创建硬编码对象:

@[object1, object2]

创建一个NSArray;

@{@"key1": value1, @"key2": value2}

创建一个NSDictionary,

@"hello world"

通常和

一起创建一个NSString
@1, @2, @YES, @3.1415927

分别创建NSNumber实例。

  

在将项目插入表格时,该方法如何知道将哪个对象用作数据源。

它使用当前在调用它的表视图上设置的数据源。