gpt4 book ai didi

objective-c - 使用 transient 属性时对原语有何需求?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:13:43 25 4
gpt4 key购买 nike

这是什么?

我不确定我是否完全理解它的作用。

- (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”之间是怎么发生的!

谁能帮我理解一下?

最佳答案

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

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

所以模式是:

  1. 告诉每个人您要读取一个值。
  2. 读取值。
  3. 告诉大家您已经阅读了该值。

关于objective-c - 使用 transient 属性时对原语有何需求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12286883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com