gpt4 book ai didi

objective-c - setValue :forKey: search for the KVC-compliant method or ivar? 的顺序是什么

转载 作者:行者123 更新时间:2023-11-29 13:31:21 26 4
gpt4 key购买 nike

一些背景:

我写了一个 UIScrollView 派生类,带有一个名为 contentView 的 outlet,类似于下面这样:

@interface MyScrollView : UIScrollView {
IBOutlet UIView * contentView;
}

...

@end

我的导出,在这种情况下是 iVar,而不是属性(property)。我在 Interface builder 中使用了我的类,并将 View 连接到 contentView socket 。然而,在运行时,我发现我的 iVar 仍然是 nil,并且没有设置为所需的 View 对象。

一些实验表明,如果我重命名导出或将导出设为属性而不是 iVar,一切都会正常进行。进一步的研究表明,如果我的 socket 是一个名为 contentView 的 iVar,加载 Nib 实际上会将我想要的 View 对象连接到一个名为 _contentView 的 UIScrollView 中的私有(private) iVar。

我知道 nib 加载使用 KVC 设置值,并且 KVC setValue:forKey: 方法将使用以下任何一种设置值:

  • 设置{Key}:方法
  • {key} iVar
  • _{key} iVar

我怀疑,但无法证明,首先会尝试找到 set{Key}: 方法,如果失败,则会对 iVars 进行枚举以找到 { key}_{key} 接下来是 iVar。此枚举可能发生在处理子类之前处理来自父类(super class)的 iVar 的顺序。

是否有尝试上述候选人的记录顺序?父类(super class)成员相对于子类的尝试顺序是什么?

最佳答案

具体搜索算法记录在Key-Value Coding Programming Guide中.

关于objective-c - setValue :forKey: search for the KVC-compliant method or ivar? 的顺序是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804270/

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