zoukankan      html  css  js  c++  java
  • 探索static的用处

    探讨的问题

      IOS开发中,新手在写tableView的identifier,如果有多个tableView有可能直接用ID都用了相同的名字但又没有用statice,这样就会导致下面的错误,而如果加了之后就不会。那么IOS中static这个关键字到底有哪些作用呢?

    环境

       - 使用一个main一个person类,具体如下

    #import <Foundation/Foundation.h>
    
    #import "SAMPerson.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
           
            extern int age;
            
            NSLog(@"%d",age);
            
        }
        return 0;
    }
    #import "SAMPerson.h"
    
    int age = 10;
    
    @implementation SAMPerson
    
    @end

    步骤:

      - 修饰局部变量时

          - 可以看到没有static时,age每次打印的都是1,有static的时候打印会根据上一次的结束继续运算。

              

        - 修饰全局变量的时候

          - 下面这种情况下,我定义了一个age的全局变量,这种情况下是很危险的,因为任何用extern来外部引用我这个age变量,都可以调用它,甚至修改它。

          

          - 而当你用static来修饰age的时候,你再调用就发现就会报错,如下图。

    总结:

       - static修饰局部变量

          - 让局部变量只初始化一次

            - 局部变量在程序中只有一份内存

            - 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁)

       - 修饰全局变量

           - 全局变量的作用域仅限于当前文件

  • 相关阅读:
    C#.net使用DotNetCharting控件生成报表统计图
    部署DTCMS到Jexus遇到的问题及解决思路--验证码
    部署DTCMS到Jexus遇到的问题及解决思路---部署
    LNMP环境搭建
    LAMP环境搭建
    Mac开发配置手册
    MAC OS X的命令行技巧
    如何生成SSH key
    ssh-keygen 的 详解
    Mac上Homebrew的使用——Homebrew 使 OS X 更完整
  • 原文地址:https://www.cnblogs.com/samyangldora/p/4623352.html
Copyright © 2011-2022 走看看