使用瞬态属性时基元需要什么?

时间:2012-09-05 17:37:58

标签: objective-c ios

这是什么?

我不确定我是否完全明白这是做什么的。

- (NSString *)sectionIdentifier {

    [self willAccessValueForKey:@"sectionIdentifier"];
    NSString *tmp = [self primitiveSectionIdentifier];
    [self didAccessValueForKey:@"sectionIdentifier"];

    if (!tmp) {

        tmp = @"bananas";

        [self setPrimitiveSectionIdentifier:tmp];
    }
    return tmp;
}

为什么我需要这个 primitiveSectionIdentifier

最终,我正在使用Apple的文档中的示例项目来创建一个节标识符,以便与我的NSFetchedResultsController一起使用。

虽然这确实有效。我对自己说,

将访问

sectionIdentifier ”, 然后我将“ tmp ”设置为 primitiveSectionIdentifier 。但是primitiveSectionIdentifier在这一点上什么也没有!是吗?

然后我说我确实访问了“ sectionIdentifier ”。但是我看不出“Will”和“Did”之间发生了怎么回事!

有人能帮我理解吗?

1 个答案:

答案 0 :(得分:3)

[self primitiveSectionIdentifier]是所谓的“原始访问者”(参见“核心数据编程指南”的词汇表)。这是实际从持久性存储中获取“sectionIdentifier”值的函数。该功能由Core Data运行时自动创建。

willAccessValueForKeydidAccessValueForKey是“通知方法”。根据文档,它们用于键值观察,维持反向关系等。

所以模式是:

  1. 告诉大家你要读一个值。
  2. 阅读价值。
  3. 告诉大家你已经读过这个价值。