请问ALtium可以像Cadance一样全局变量在局部被修改修改铺铜,而保证不影响别的地方的铺铜?谢谢!!!


  

一、Javascript的变量的scope是根据方法块来划汾的(也就是说以function的一对大括号{ }来划分)切记,是function块而for、while、if块并不是作用域的划分标准。

当全局变量跟全局变量在局部被修改变量重名时全局变量在局部被修改变量的scope会覆盖掉全局变量的scope,当离开全局变量在局部被修改变量的scope后又重回到全局变量的scope,而当全局變量遇上全局变量在局部被修改变量时用window.globalVariableName取全局变量的值。


//1.const修饰的全局变量即使语法通过,但是运行的时候会受到常量区的保护运行失败
 //a = 100; //直接修改语法不通过,修改失败
 *p = 100; //间接修改语法通过运行时失败
 
 //c语言下称为伪常量
 //int a[b]; 伪常量是不可以初始化数组的
 
 
 
  • 全局变量和静态全局变量的值改變以及它们被Block捕获进去,因为是全局的作用域很广
  • 静态变量和自动变量,被Block从外面捕获进来成为__main_block_impl_0这个结构体的成员变量
  • 自动变量是鉯值传递方式传递到Block的构造函数里面去的。Block只捕获Block中会用到的变量由于只捕获了自动变量的值,并非内存地址所以Block内部不能改变自动變量的值。
  • Block捕获的外部变量可以改变值的是静态变量静态全局变量,全局变量
    • _NSConcreteStackBlock:只用到外部全局变量在局部被修改变量、成员属性变量苴没有强指针引用的block都是StackBlock。 StackBlock的生命周期由系统控制的一旦返回之后,就被系统销毁了,是不持有对象的

      • _NSConcreteStackBlock所属的变量域一旦结束那么该Block就會被销毁。在ARC环境下编译器会自动的判断,把Block自动的从栈copy到堆比如当Block作为函数返回值的时候,肯定会copy到堆上
    • _NSConcreteMallocBlock:有强指针引用或copy修饰的成員属性引用的block会被复制一份到堆中成为MallocBlock没有强指针引用即销毁,生命周期由程序员控制,是持有对象的
  • ARC下Block中引用id类型的数据有没有__block都一樣都是retain,而对于基础变量而言没有的话无法修改变量值,有的话就是修改其结构体令其内部的forwarding指针指向拷贝后的地址达到值的修改

我要回帖

更多关于 全局变量在局部被修改 的文章

 

随机推荐