static修饰符对于变量的影响
2016-11-29 本文已影响8人
飞雨2013
对于变量的认知:局部变量,全局变量。
1.局部变量定义在函数内部,出了函数之外就无法读取到。
2.全局变量在定义的整个文件范围内都是可以读取的。
众所周知在oc中,.m中声明的变量不论是局部的还是全局的,都不能被其他文件所读取。
想定义一个被外部变量能读取的变量可以在.h文件中static 声明。(在网上看了很多文章写道在.h中定义的static 修饰的变量无法编译,可是我没有遇到这种情况,求指教。)
3.static定义的变量其会保存上次的值。

至于我的全局变量在另外一个文件中声明

总结:
静态变量的优点:
1、节省内存。静态变量只存储一处,但供所有对象使用。
2、对于static修饰的局部变量(静态局部变量),不会在函数调用完后就被释放。下次再次读取的时候会保存上次读取到的值(延长其生命周期至整个程序)。。
3、可提高时间效率。只要某个对象对静态变量更新一次,所有的对象都能访问更新后的值。static修饰的全局变量可以在其他文件中读取到该值。