0

我有一个与 xib 相关的 ClassA:

@interface ClassA : UIViewController
@end


#import "ClassA.h"
@interface ClassA()
@property (nonatomic, weak) IBOutlet UIButton *myButton;
@end

@implementation ClassA
....
@end

知道我有一个从 ClassA 继承的 ClassB 女巫。( UIViewController 女巫一个 xib)

@interface ClassB : ClassA
@end

@implementation ClassB

// Here i can't not access the private property myButton.
@end

我的问题是:

我知道在继承的类中无法访问所有私有类字段(方法、属性、..)。我也知道如果我想访问我的属性,我只是在 ClassA.h 中声明它们,但我认为 IBOUtlet 和 IBAction 应该是私有的。为什么Objective C 不能有Java 关键字(private、protected、public)之类的东西。?

我的另一个问题是,在 ClassB.xib 中,我已将文件的所有者分配给 ClassB,在这里我可以看到 myButton 插座(女巫在 ClassA 中被声明为私有),我可以将其分配给 ClassB.xib 中的另一个按钮但我不能以编程方式进行。

为什么 xibs(文件的所有者)和类的代码实现(继承可见性的差异)之间存在差异?谢谢

4

2 回答 2

1

我认为您可以myButton在 ClassB.xib 中看到该属性,因为 Xcode 只查找 IBOutlets,然后在运行时,当加载 nib 时,它只是通过 KVC 使用setValue:forKey:. 您也可以myButton使用 KVC 从 ClassB 访问,但您不希望这样,否则您会将属性声明为 public(在头文件中)。

于 2013-06-07T09:36:23.840 回答
0

这不是Java。如果它被声明为一个 IBOutlet 或 IBAction 给它的 Interface Builder 可见性。

于 2013-06-07T09:31:13.977 回答