美文网首页iOS
iOS static全局变量作用区域

iOS static全局变量作用区域

作者: 某非著名程序员 | 来源:发表于2019-04-30 11:42 被阅读17次

    static全局变量仅对当前文件生效,即在A文件中修改,在B文件中值不生效;在A的分类也不生效。一个static全局变量在不同文件会产生多份。

    对于iOS static全局变量,如果只是当做一个常量,可以使用;如果是项目中需要赋值,建议谨慎使用。

    下面举例,并附上demo
    在Const.h中定义static int topmargin =44;并在modity方法topmargin修改为64。
    在appdelegate->didFinishLaunchingWithOptions 中调用[Const modity]修改topmargin=64;

    全局变量打印值和地址

    按以前的逻辑,在初始化时令topmargin=64,然后所有地方使用应该是64。而实际情况在ViewController中打印值却是Const.h初始化的值44,地址也产生了变量。
    图1的结果说明:同一个static全局变量,在不同类中地址都不相同,且在Const modity修改static变量值后,其他类也未生效。

    这就所为的static全局变量仅对当前文件生效。即自己使用自己修改,多个文件会产生多份。ViewController及其分类也是独立的。

    相关文章

      网友评论

        本文标题:iOS static全局变量作用区域

        本文链接:https://www.haomeiwen.com/subject/qrbmnqtx.html