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