3

通常,只有当另一个类可以访问它时,我才会使用“属性”插座和变量。否则它在接口块中声明。但我看到有些是创建“属性”出口和变量,但他们不能在另一个类中访问这些。所以任何人都可以解释,如果我们不从另一个类访问某些出口或变量,为什么我们需要“属性”出口和变量?

4

3 回答 3

2

声明它们是为了在 NIB/XIB 编辑器(又名 Interface Builder)中公开它们。

这允许您将视图与 NIB 编辑器中的对象属性相关联,并且 XIB 取消归档程序将在初始化时设置属性,以便您可以在初始化后轻松地从类中引用这些实例。

于 2013-07-17T06:21:31.790 回答
2

如果您不需要从另一个类访问插座,则无需将其设为属性。您可以将其设为您的实例变量@implementation

@implementation ViewController {
    IBOutlet UIView *someView;
}

...

有些人不喜欢使用普通的实例变量,而更喜欢总是使用属性,即使是私有数据也是如此。如果您不使用 ARC,则使用属性而不是原始实例变量特别有用,因为您可以依靠属性设置器来保留和释放它们的对象。如果您使用 ARC,这不是问题。

如果你想使用一个属性但你不想在你的 中声明这个属性,你可以在你的文件@interface顶部放置一个类扩展名(在你的上方),然后把属性放在那里:.m@implementation

@interface ViewController () {

@property (nonatomic, strong) IBOutlet UIView *someview;

@end

@implementation ViewController

...
于 2013-07-17T06:43:11.613 回答
1

我想你是在问属性。属性用于方便您编写 getter 和 setter。

为什么我们需要getter setter?有一个地方我们可以访问一个变量,以便将来如果我们需要添加一些规则,我们可以在不更改整个代码的情况下做到这一点。

为什么使用getter和 setter?

出口供 interfacebuilder 访问属性。

于 2013-07-17T06:35:40.320 回答