静态变量

当我们希望一个变量的作用域不仅仅是作用域某个类的某个对象,而是作用域整个类的时候,这时候就可以使用静态变量。

static
static修饰的变量,是一个私有的全局变量。
C或者Javastatic关键字修饰的变量,可以使用类名直接拿到这个变量对象,在其他类中可以进行修改。但是在OCstatic修饰的变量是不能通过类名直接访问的,它只作用于它声明所在的.m文件中。
static修饰的变量必须放在@implementation外面或方法中,它只在程序启动初始化一次。

static int num;

静态常量

const
const修饰的变量是不可变的,如果需要定义一个时间间隔的静态常量,就可以使用const修饰。

static const NSTimeInterval LMJTimeDuration = 0.5;

如果试图修改TimeDuration编译器则会报错。

如果我们定义一个字符串类型的静态常量就要注意了,这两种写法是一样的,而且是可以修改的

static NSString const * LMJName = @"iOS开发者公会";
static const NSString * LMJName = @"iOS开发者公会";

这两种写法cons修饰的是* LMJName,*是指针指向符,也就是说此时指向内存地址是不可变的,而内存保存的内容时可变的。
所以我们应该这样写:

static NSString * const LMJName = @"iOS开发者公会";

当我们定义一个对象类型常量的时候,要将const修饰符放到*指针指向符后面。

全局变量

extern
extern修饰的变量,是一个全局变量。

extern NSString * LMJName = @"iOS开发者公会;

extern修饰的变量也可以添加const进行修饰:

extern NSString * const LMJName = @"iOS开发者公会;

此时全局变量只能被初始化一次
extern定义的全局常量的用法和宏定义类似,但是还是有本质上的不同的。 extern定义的全局常量更不容易在程序中被无意窜改。

版权声明:出自MajorLMJ技术博客的原创作品 ,转载时必须注明出处及相应链接!

iOS定义静态变量、静态常量、全局变量的更多相关文章

  1. PHP接口中的静态变量、常量与类中静态变量、常量的区别

    接口: 1 不能够定义静态变量(常量除外) 2 定义的常量 const YOUCONST = VALUE,不能在子类中覆盖,在子类中以 interfaceName::YOUCONST的方式调用 3 不 ...

  2. Java 静态变量,常量和方法

    static 关键字 例如:在球类中使用PI这个常量,可能除了本类需要这个常量之外,在另外一个圆类中也需要使用这个常量.这时没有必要 在两个类中同时创建PI这个常量,因为这样系统会将这两个不在同一个类 ...

  3. PHP:第一章——PHP中静态变量和常量

    <?php header("Content-Type:text/html;charset=utf-8"); /******************************** ...

  4. php 类静态变量 和 常量消耗内存及时间对比

    在对类执行100w次循环后, 常量最快,变量其次,静态变量消耗时间最高 其中: 常量消耗:101.1739毫秒 变量消耗:2039.7689毫秒 静态变量消耗:4084.8911毫秒 测试代码: cl ...

  5. Java静态变量,常量,成员变量,局部变量

    类变量(也叫静态变量)是类中独立于方法之外的变量,用static 修饰.(static表示“全局的”.“静态的”,用来修饰成员变量和成员方法,或静态代码块(静态代码块独立于类成员,jvm加载类时会执行 ...

  6. IOS总结 静变量static、全局变量extern、局部变量、实例变量

    1.静态变量 static 什么是静态变量:从面向对象的角度触发,当需要一个数据对象为整类而非某个对象服务,同时有力求不破坏类的封装性,既要求此成员隐藏在类的内部,有要求对外不可见的时候,就可以使用s ...

  7. java 静态变量 静态代码块 加载顺序问题

    在网上看了一个这样的题目 public class StaticTest { public static void main(String[] args) { staticFunction(); } ...

  8. js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!

    效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ...

  9. Java中字段、属性、成员变量、局部变量、实例变量、静态变量、类变量、常量

    首先看个例子: package zm.demo; public class Demo { private int Id;//成员变量(字段).实例变量(表示该Id变量既属于成员变量又属于实例变量) p ...

  10. java:构造方法:无参构造/有参构造 this static关键字 静态变量 静态方法 代码块 封装 静态常量。

    /*构造方法是一种特殊的方法,专门用于构造/实例化对象,形式:[修饰符] 类名(){ }构造方法根据是否有参数分为无参构造和有参构造*/public class Dog {               ...

随机推荐

  1. Linux学习之基本介绍

    技术不分年龄高低,只分水平高低. 搞技术25k以下是不看天赋的,25k以上是要看天赋的. 1U服务器,2U服务器,刀片服务器.程序都是运行在服务器上的. 榜样的力量是无穷的.--MK. 汇编语言跟硬件 ...

  2. weblogic状态监控脚本

    echo "======================================welcome============================================ ...

  3. NEU 1006 Intermediary

    1006: Intermediary 时间限制: 1 Sec  内存限制: 128 MB提交: 261  解决: 25[提交][状态][讨论版] 题目描述 It is widely known tha ...

  4. 7个好用的在线YouTube视频下载工具

    title: 7个好用的在线YouTube视频下载工具 toc: false date: 2018-10-10 15:11:00 categories: methods tags: youtube C ...

  5. Python 函数(二)

    参数 以下是调用函数时可使用的正式参数类型: 必备参数 关键字参数 默认参数 不定长参数 必备参数 必备参数须以正确的顺序传入函数.调用时的数量必须和声明时的一样. 调用printme()函数,你必须 ...

  6. VSCode (Code) 技法

    本人使用插件推荐 indent-rainbow https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow B ...

  7. vue中插件的使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 【AnjularJS系列5 】— scopes、module、controller

    第五篇, scopes.module.controller 这一篇,感觉,在前面几篇就使用过的属性,但,总觉得没有理解透彻,有待完善!~ 1.scopes A.定义:$scope是一个把view(一个 ...

  9. PhotoZoom的工具栏 图片放大不失真

    使用PhotoZoom能够对数码图片无损放大,备受设计师和业内人员的青睐,它的出现时一场技术的革新,新颖的技术,简单的界面,优化的算法,使得它可以对图片进行放大而没有锯齿,不会失真.本文为您一起来认识 ...

  10. dp入门(先摆在这里,之后细细读)

    网址转载链接:  http://bbs.chinaunix.net/thread-4094539-1-1.html 动态规划:从新手到专家 Hawstein翻译 前言 我们遇到的问题中,有很大一部分可 ...