使用保护二传手和吸气剂的财产?

时间:2013-02-14 00:49:15

标签: objective-c

如果我宣布一个具有属性的类,例如:

@property float radius, diameter;

因此,将在此类中创建或从其继承的任何对象都将拥有自己的radiusdiameter实例吗?

这也意味着他们有自己的定位器和吸气器太对了?

我想要完全理解的是如何以两种方式处理变量访问:

1.当我想确保用户没有弄乱原始值时。

2.当我想限制实例变量的用户时,他可以访问,而不能访问。

TNX

1 个答案:

答案 0 :(得分:0)

至于第一部分,是的,任何子类都会继承它的超类属性和方法,只要它们是公共的。只记得合成它们以获得吸气剂和固定剂。

所以,如果你想拥有一个无法修改的公共财产:

// This returns a copy - whatever the receiver does with it doesn't affect the original
@property (nonatomic, copy) BOOL someVariable;

// This declares the property as only having a getter - no setter
@property (nonatomic, readonly) NSArray *someArray;

除非另有说明,否则头文件中声明的任何属性都被视为公共属性。如果您想拥有私有属性,ivars或方法,请在类继续类别的实现文件中声明它们:

// In your .m *above* the @implementation MyClass
@interface MyClass()
@property (nonatomic, strong) NSArray *myPrivateModel;
@end

Stamford在iTunesU上做了一个很棒的系列讲座,我真的建议你学习objectiveC

希望有所帮助