Objective c setValue:forKey:搜索符合KVC的方法或ivar的顺序是什么?
一些背景: 我编写了一个UIScrollView派生类,其中包含一个名为contentView的出口,如下所示:Objective c setValue:forKey:搜索符合KVC的方法或ivar的顺序是什么?,objective-c,ios,key-value-coding,Objective C,Ios,Key Value Coding,一些背景: 我编写了一个UIScrollView派生类,其中包含一个名为contentView的出口,如下所示: @interface MyScrollView : UIScrollView { IBOutlet UIView * contentView; } ... @end 我的出口,在这种情况下是一个iVar,而不是一个财产。我利用Interface builder中的类,将一个视图连接到contentViewoutlet。然而,在运行时,我发现我的iVar仍然为零,并且没有
@interface MyScrollView : UIScrollView {
IBOutlet UIView * contentView;
}
...
@end
我的出口,在这种情况下是一个iVar,而不是一个财产。我利用Interface builder中的类,将一个视图连接到contentView
outlet。然而,在运行时,我发现我的iVar仍然为零,并且没有设置为所需的视图对象
一些实验表明,如果我重新命名了插座,或者将插座作为属性而不是iVar,所有这些都可以正常工作。进一步的研究表明,如果我的插座是名为contentView
的iVar,加载nib实际上会将我所需的视图对象连接到名为\u contentView
的UIScrollView中的私有iVar
我知道nib加载使用KVC设置值,KVCsetValue:forKey:
方法将使用以下任何一种设置值:
@interface MyScrollView : UIScrollView {
IBOutlet UIView * contentView;
}
...
@end
methodset{Key}:
iVar{key}
iVar{key}
set{Key}:
方法,如果失败,则执行iVar枚举以查找{Key}
或{Key}
iVar。此枚举可能按照在子类之前处理来自超类的IVAR的顺序发生
是否有记录在案的尝试上述候选人的顺序?超类的成员按照与子类相关的顺序进行尝试?特定的搜索算法记录在中。特定的搜索算法记录在中。非常感谢您找到参考。非常感谢您找到参考。