Objective-C 的新手,我基本上来自 c++ 背景。我现在正在学习objective-c,并想确认我理解的是写还是错?好心提醒。
我有以下课程:
@interface Test: NSObject
{
int instance1;
}
@property int instance1;
- (void) sayHello;
@end
“测试”类有一个实例变量instance1
。如果成员函数 ie: sayHello 想要访问变量,它必须通过 getter/setter 函数发生。所以,有两种方法可以得到它:
- 用户可以定义。
- 我们可以从编译器那里得到帮助吗?如何?。将相同的变量声明为属性,并对其进行合成,编译器为我们获取该特定变量的 getter/setter 代码。
所以,不合时宜地,getter/setter 是在方法实现中访问变量的唯一方法,即。两者都self.instance1 = 100;
需要instance1 = 100
getter/setter。
错过了 1. 和 2.,无法访问该instance1
变量。
此外,instance1
公共变量可以在具有对象实例的类之外访问。
Test *t = [[ Test alloc] init];
t.instance1 = 200;
问题:
- 有什么办法可以使
instance1
“私有”,使我无法访问类外的实例变量? - 我的理解有什么问题吗?