IOS 成员变量,全局变量,局部变量定义,static与extern的区别
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;即可使用了
IOS 成员变量,全局变量,局部变量定义,static与extern的区别的更多相关文章
- 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量
Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...
- [ 转载 ] Java中成员变量 和局部变量
java语言支持的变量类型 类变量:独立于方法之外的变量,用 static 修饰. 局部变量:类的方法中的变量. 实例变量(全局变量):独立于方法之外的变量,不过没有 static 修饰. publi ...
- Java:成员变量、局部变量和静态变量
梳理一下: 根据定义变量位置的不同,可以将变量分成两大类:成员变量和局部变量. 成员变量(俗称全局变量):在类里定义的变量.又分为实例变量和类变量(也成为静态变量). 实例变量:不以static修饰, ...
- [Java入门笔记] 面向对象编程基础(三):成员变量和局部变量
在类中,变量根据定义的位置不同,可以分为成员变量和局部变量.
- 【java基础】成员变量和局部变量02
成员变量和局部变量(2) 成员变量的初始化和内存中的运行机制 当系统加载类或者创建类的实例的时候,系统会自动为成员变量分配内存空间,并自动指定初始值. package object; ...
- 【java基础】成员变量和局部变量
成员变量和局部变量 根据定义变量位置的不同,可以将变量分为成员变量和局部变量 成员变量是在类范围内定义的变量 局部变量是在一个方法内定义的变量 成员变量可以分为: ...
- JAVA类与对象(四)----成员变量与局部变量 、成员方法、构造方法
类体中的变量分为两部分.变量定义部分定义的变量为类的成员变量,在方法体中定义的变量和方法中涉及的变量称为局部变量. 成员变量和局部变量的区别: (1).成员变量在整个类中都有效,局部变量只在定义它的方 ...
- java笔记13之成员变量与局部变量
成员变量和局部变量的区别 1在类中的位置不同 局部变量:类的方法体内 成员变量:类的方法之外 2内存的不同位置 局部变量:在栈内存中 成员位置:在堆内存 3生命周期不同 局部变量:随着方法的调用而存在 ...
- 《java入门第一季》之面向对象面试题(成员变量与局部变量的区别)
/* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 ...
随机推荐
- Weblogic Server 的下载,安装配置与部署
下载 下载页面: http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html 目前 ...
- C#大牛应该知道的一些知识
任何一个使用.NET的人 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗 ...
- 【python】初识python的问题
这两天利用晚上时间简单的了解了一下python语言,在Mac上和Windows上都安装了python,对比两个平台,还是发现在mac上体验比较好一点.安装的版本好像也不一样,语法还有点小区别.简单的对 ...
- hive UDAF开发入门和运行过程详解(转)
介绍 hive的用户自定义聚合函数(UDAF)是一个很好的功能,集成了先进的数据处理.hive有两种UDAF:简单和通用.顾名思义,简单的UDAF,写的相当简单的,但因为使用Java反射导致性能损失, ...
- 记一次bug查找经历
系统采用cell插件显示汇总数据,然后发现个公司数据显示不出来,接到这个任务开始查找bug. 通过需求了解并不知道其他公司什么情况,因为就这个公司有了反馈: 本来以为很容易找到点的,毕竟数据显示不出来 ...
- 关于给予webApp框架的开发工具
webApp 1.phonegap webApp即基于html+css+javascript,对于新手会联想好多及疑问(如数据的添删查修如何实现,参数传递如何实现) 添加查修使用jsonp跨域实现的 ...
- Trie树及其应用
Trie树及其应用 Trie树 Trie树,又称单词查找树.字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经 ...
- 微软IE11浏览器的7大变化
微软IE11浏览器的7大变化 投递人 itwriter 发布于 2013-06-29 11:48 评论(9) 有1025人阅读 原文链接 [收藏] « » 微软很看重自己的 IE 浏览器,这款浏 ...
- apache cxf笔记之Spring客户端访问和调用webservice服务
继续上次的spring服务的问题,这边介绍一种spring配置客户端的方法. 1.src目录下新建client-beans.xml文件 <?xml version="1.0" ...
- 开发一个微信小程序教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...