2

如果我声明一个具有属性的类,例如:

@property float radius, diameter;

所以任何将在这个类中创建或继承自它的对象,都会有自己的实例,radiusdiameter吗?

这也意味着他们也有自己的 setter 和 getter 对吗?

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

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

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

tnx

4

1 回答 1

0

至于第一部分,是的,任何子类都将继承它的超类属性和方法,只要它们是公共的。只需记住将它们合成以获取 getter 和 setter。

因此,如果您想拥有一个无法修改的公共属性:

// 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

斯坦福大学在 iTunesU 上做了一个很棒的系列讲座,我真的推荐它来学习 ObjectiveC

希望有帮助

于 2013-02-14T01:05:54.703 回答