我几周前开始学习 Objective-C,但我仍然不明白如何正确管理类的封装。在类中声明私有(private)成员变量的最佳方式是什么?
似乎使用“@property”为您的成员变量设置正确的 getter/setter 是正确的方法,而不仅仅是在界面中声明它为“@private”。但在我看来,这仍然让其他类可以访问这些变量。即使您将属性声明为“只读”,外部类也可以访问对成员变量的引用并修改它!
所以我猜想声明一个私有(private)成员变量的最好方法是不通过声明属性来包含任何 guetter/setter。我对吗?或者有更好的方法吗?
谢谢
最佳答案
如果您不希望其他类访问它,请在您的实现中声明@property,为您的类创建一个匿名类别。
头文件:
// MyClass.h
@interface MyClass : NSObject {
NSObject *_privateObject;
NSObject *_readonlyObject;
NSObject *_publicObject;
}
@property (nonatomic, retain, readonly) NSObject *readonlyObject;
@property (nonatomic, retain) NSObject *publicObject;
@end
实现:
// MyClass.m
@interface MyClass ()
@property (nonatomic, retain) NSObject *privateObject;
// Make it writable on the implementation
@property (nonatomic, retain, readwrite) NSObject *readonlyObject;
@end
@implementation MyClass
@synthesize privateObject = _privateObject;
@synthesize readonlyObject = _readonlyObject;
@synthesize publicObject = _publicObject;
这些是三种不同属性的示例。
- privateObject 在其他类中不可见;
- readonlyObject可见但只读;
- publicObject 是可见的,可以获取和设置;
关于iphone - 声明私有(private)成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3571539/