IOS 成员变量,全局变量,局部变量定义,static与extern的区别

1,先说定义

1)成员变量定义:生存与该类的生命周期,变量存活周期跟你定义的该类实体对象一样;作用域是整个实体对象;可以在h文件中声明或者在m文件中@implementation上面添加的

#import “S1ViewController.h”

@interface S1ViewController ()

//这里做声明

@end

@implementation S1ViewController

@end

举例:S1ViewController.h文件中定义

@interface S1ViewController : UIViewController

{

NSString* sttr2;//S1ViewController实体对象的成员变量

}

@property(nonatomic,retain) NSString* sttr2;//定义点语法的快捷操作setter 与 getter方法

@end

注明:在h文件中定义的变量,在外部可见

.h声明了类,相当于java的接口,在这里interface块外声明的函数和属性都是外部可见的,但是在块内的貌似是私有的

.m里面的所有东西都是对外封闭的这样就是有效的源码的开源与闭源;

2)全局变量

定义:在@implementation外定义的变量(在@implementation中定义也是可以但是一般不这么干)

举例:

//规范的

staticinthu=3;//全局变量

NSString*sttr1=@”S1ViewController”;//全局变量

@implementationS1ViewController

@end

//不规范的

@implementation S1ViewController

static int hu=3;//全局变量

NSString*sttr1=@”S1ViewController”;//全局变量

@end

全局变量分为两种:

1)static修饰的也称私有全局变量,只在该源文件中可用

学习过Java 或者 C 语言的朋友应该很清楚static关键字吧?在某个类中声明一个static 静态变量, 其他类中想使用它或者修改它不用new 这个对象 ,直接使用它的类名方可直接拿到这个静态变量的对象,遍可以在其他类中任意修改这个变量的数值。它是存于全局变量区,生命周期和程序相同,static只在声明的类中可见。

在声明的类中结束后,再次使用还是之前的值。

在Objective-C 的语法中声明后的static静态变量在其他类中是不能通过类名直接访问的,它的作用域只能是在声明的这个.m文件中 。不过可以调用这个类的方法间接的修改这个静态变量的值

static关键字声明的变量须放在implementation外面,或者方法中,如果不为它赋值默认为0,它只在程序开机初始化一次(并不是该类实例化后才初始化的)

将static静态变量写在方法中,它的初始化也是在程序开机时,程序一旦启动以后static是不能在创建的。所以程序在这里调用了5次这个方法,sCount的值并没有因为重新创建static sCount而改变,而是将sCount的值一直存在内存中。

2)没有static修饰的 ,在任何源文件中都可以用,注意:定义没有static的全局变量,命名一定要很独特,才能区分与其他源文件中的全局变量,如果出现跟其他源文件同名的全局变量,则会报错误

例如:

NSString*sttr1=@”S1ViewController”;//全局变量

在其他文件如果要用该全局变量,在前面加externNSString*sttr1;即可使用了

最新文章

  1. 初试Code First(附Demo)
  2. 【C#】 知乎用户网络爬虫
  3. Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
  4. debian下安装zendframework
  5. 关于"是否需要有代码规范"的个人看法
  6. ZeroClipboard – 轻松实现复制文本到剪贴板功能
  7. C# 读写App.config
  8. iPhone中修改iMessage关联手机号码的终极方法
  9. Cocos2d-x开发实例介绍帧动画使用
  10. cocos2d-x游戏开发系列教程-超级玛丽04-AppDelegate
  11. Ubuntu无法进入图形界面及VirtualBox扩容的解决方案
  12. JVM相关知识(1)
  13. 对于vijos11.2模拟赛
  14. Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据
  15. 操作系统PV编程题目总结一
  16. DWZ富客户端框架(jQuery RIA framework)
  17. 2018.11.08 NOIP模拟 班车(倍增+dfs+bit)
  18. Python super() 函数
  19. PCL点云分割(2)
  20. 设置js同源

热门文章

  1. 使用EasyUI的树控件构建Web界面
  2. Windows Forms框架编程
  3. Bug Tracker
  4. 苹果icloud邮箱抓取
  5. JDBC之事务隔离级别以及ACID特性
  6. springMVC3学习(四)--访问静态文件如js,jpg,css
  7. jQuery Validation让验证变得如此容易(一)
  8. new和instanceof的内部机制
  9. wget ( download the whole page from the website )
  10. js jquery 实现html页面之间参数传递(单一参数、对象参数传递)