//如果Person.h文件中设置了 static int a = 10; 的内部变量 //那么在引用了#import<Person.h>的源文件中将无法设置同样的 内部变量 或者全局变量 会被判定为重复定义 //当然你可以在main文件 和 person.m文件中使用 //mina文件中a 的内存地址 和 person.m文件中 的内存地址不同, 虽然他们都是引用person.h文件中声明的 //static int a = 10 //通过测试 在main 文件中 对a 的值进行修改 并不影响到 Person.m中文件的结果 他们俩在共用一个变量的时候 //这个变量在两个文件中的内存地址竟然不一样 变量被多次定义了; main中 a+4 ==14 Person.m a - 4 == 6
main a地址 ==0x10000116c person.m a地址 ==0x100001168
//结论,虽然看起来是在使用一个变量 其实并不是,每个使用static int a = 10 的文件中 都是独立的变量 //如果都使用的话就会造成变量多次定义 当多个源文件 同样引用了Persong.h的头文件 莫名其妙的就会被多开辟一个变量的内存 //所以在使用的时候一定要特别注意 尽量不要在.h文件中定义ststic 内部变量 一旦.h文件被其他源文件引用的话 引用他的文件就会无缘无故 //开辟内存, 会造成内存泄漏,针对与源文件引用.h文件
//如果在Person.m中定义的内部变量static int a = 10; //Person.h 中就不能声明 int a = 10;的全局变量 和 static int a 的内部变量了 //会被判定为重复定义 那就不用担心 变量被多次定义的问题了
|