如果我声明一个具有属性的类,例如:
@property float radius, diameter;
所以任何将在这个类中创建或继承自它的对象,都会有自己的实例,radius
对diameter
吗?
这也意味着他们也有自己的 setter 和 getter 对吗?
我试图完全理解的是如何以两种方式处理变量访问:
1.当我想确保用户没有弄乱原始值时。
2.当我想限制实例变量的用户时,他可以访问而他不能访问。
tnx
如果我声明一个具有属性的类,例如:
@property float radius, diameter;
所以任何将在这个类中创建或继承自它的对象,都会有自己的实例,radius
对diameter
吗?
这也意味着他们也有自己的 setter 和 getter 对吗?
我试图完全理解的是如何以两种方式处理变量访问:
1.当我想确保用户没有弄乱原始值时。
2.当我想限制实例变量的用户时,他可以访问而他不能访问。
tnx
至于第一部分,是的,任何子类都将继承它的超类属性和方法,只要它们是公共的。只需记住将它们合成以获取 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
希望有帮助