为什么我们需要iOS中的属性出口和变量?

时间:2013-07-17 06:19:27

标签: iphone ios objective-c automatic-ref-counting

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

3 个答案:

答案 0 :(得分:2)

它们被声明,以便它们将在NIB / XIB编辑器(也称为Interface Builder)中公开。

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

答案 1 :(得分:2)

如果您不需要从另一个班级访问该商店,则不需要将其作为财产。您可以在@implementation

中将其设为实例变量
@implementation ViewController {
    IBOutlet UIView *someView;
}

...

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

如果您想使用某个媒体资源,但又不想在@interface中声明该媒体资源,则可以在.m文件的顶部添加一个分类扩展名(在您的上方) @implementation),并将财产放在那里:

@interface ViewController () {

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

@end

@implementation ViewController

...

答案 2 :(得分:1)

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

为什么我们需要吸气剂?从我们可以访问变量的位置开始,以便将来如果我们需要添加一些规则,我们可以在不改变整个代码的情况下完成。

这个问题在Why use getters and setters?

中深入讨论

Outlets用于接口构建器访问属性。