(objective-C)我可以在2个不同的函数中使用相同的变量名,但是在同一个文件中吗?

时间:2013-05-31 21:41:17

标签: objective-c

也许这是隐含的,但我对它有疑问。

我有一个.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....

}

1 个答案:

答案 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类型的对象。或者。