【发布时间】:2013-07-15 13:47:51
【问题描述】:
通常我只在另一个类访问时才使用“属性”插座和变量。否则它在接口块中声明。但我看到有些是创建“属性”出口和变量,但他们不能在另一个类中访问这些。所以任何人都可以解释,如果我们不从另一个类访问某些出口或变量,为什么我们需要“属性”出口和变量?
【问题讨论】:
标签: iphone ios objective-c automatic-ref-counting
通常我只在另一个类访问时才使用“属性”插座和变量。否则它在接口块中声明。但我看到有些是创建“属性”出口和变量,但他们不能在另一个类中访问这些。所以任何人都可以解释,如果我们不从另一个类访问某些出口或变量,为什么我们需要“属性”出口和变量?
【问题讨论】:
标签: iphone ios objective-c automatic-ref-counting
如果您不需要从其他类访问插座,则无需将其设为属性。您可以在@implementation 中将其设为实例变量:
@implementation ViewController {
IBOutlet UIView *someView;
}
...
有些人不喜欢使用普通的实例变量,而更喜欢总是使用属性,即使是私有数据也是如此。如果您不使用 ARC,则使用属性而不是原始实例变量特别有用,因为您可以依靠属性设置器来保留和释放它们的对象。如果您使用 ARC,这不是问题。
如果您想使用某个属性但不想在@interface 中声明该属性,您可以在.m 文件的顶部(@implementation 上方)放置一个类扩展名,然后把属性放在那里:
@interface ViewController () {
@property (nonatomic, strong) IBOutlet UIView *someview;
@end
@implementation ViewController
...
【讨论】:
我想你是在问属性。属性用于方便您编写 getter 和 setter。
为什么我们需要getter setter?有一个地方我们可以访问一个变量,以便将来如果我们需要添加一些规则,我们可以在不更改整个代码的情况下做到这一点。
Why use getters and setters? 深入探讨了这个问题
Outlets 供 interfacebuilder 访问属性。
【讨论】:
声明它们是为了在 NIB/XIB 编辑器(也称为 Interface Builder)中公开它们。
这允许您将视图与 NIB 编辑器中的对象属性相关联,并且 XIB 解压缩器将在初始化时设置属性,以便您可以在初始化后轻松地从类中引用这些实例。
【讨论】: