也许这是隐含的,但我对它有疑问。
我有一个.m文件,它有两个不同的函数(或方法,因为它们也被称为);但是这两个函数都使用了我在每个函数内部声明的变量。
为了清楚起见,我喜欢使用相同的名字;根据我的理解;两个函数具有相同的变量名称应该没有问题,因为它们将指向内存中的2个不同的指针位置,所以它无关紧要。
我错过了什么或者做我正在做的事情是安全的吗?我应该使用不同的名字吗?我应该使用全局并在本地更改它吗?
-(int) doThis
{
int pressure = 1;
...do the calculations and return the results...
}
-(int) doThat
{
int pressure = 5;
...do the calculations and return the results....
}
答案 0 :(得分:8)
是的,当然。
您甚至可以在同一方法的不同范围内使用相同的变量名称。
示例:
-(int) doThat
{
int pressure = 5;
for (int i = 0, i < pressure, i++) {
int pressure = 10; // This is another variable!!!
pressure = 15;
//Whatever
}
return pressure; //This would return 5!
}
我无意中做了几次。可能导致的错误可能是a中的痛苦,因为它们很难被看到。
只是为了增加一些麻烦:
所有在同一个类中,您可以拥有一个实例变量pressure
,它会隐藏全局变量pressure
(如果有的话)。名为pressure
的方法可能具有隐藏实例变量的参数pressure
。然后,您可以在该方法的不同范围内声明多个变量pressure
。所有这些都会隐藏他们在封闭范围内的个别命名对应物。如果你真的想让它混淆,那就添加一个名为pressure的属性。所有这些都可能正常工作,直到你开始失去控制或几周后重新访问相同的代码。
编辑:方法pressure
显然会与属性pressure
的getter冲突。意思是,它可以工作,但编译器会将该方法作为getter,因为它返回appropritate类型的对象。或者。