小胖说事28------iOS中extern,static和const区别和用法

通俗的讲:

extern字段使用的时候,声明的变量为全局变量,都可以调用,也有这样一种比较狭义的说法:extern可以扩展一个类中的变量到另一个类中;

static声明的变量是静态变量,变量值改变过之后,保存这次改变,每次使用的时候都要读取一遍值;

const声明过得变量值是不可改变的,是readonly的属性,不可以改变变量的值。

具体用法:

1.static的用法:static NSString *str = @"哈哈";

2.const的用法:NSString *const str = @"哈哈";

3.extern的用法:在A.h里边声明一个变量extern NSString *str = @"123"; 这样就声明了一个全局变量,在B.h里边同样写入代码extern NSString *str;然后再B.m里边直接打印str就可以打印出123来,使用的时候不需要导入A.h文件头,也不区分类是否已经创建等等因素。

希望对大家有所帮助,以后写代码的时候可以更加高大上一些,也是一种技巧。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 00:33:28

小胖说事28------iOS中extern,static和const区别和用法的相关文章

IOS中Retain和Copy的区别

IOS中Retain和Copy的区别 1 ,可读性: readonly  . readwrite@property(readwrite,....) valueType value;这个属性是变量的默认属性,就是如果你 (readwrite and readonly 都没有使用,那么你的变量就是 readwrite 属性 ) ,通过加入 readwrite 属性你的变量就会有 get 方法,和 set 方法.property(readonly,...) valueType value;这个属性变量

C++类中的static和const

本文列举C++类中的static和const的规则和用法. 以下代码用来举例说明. class A { public: A():m(10) //const成员必须在构造函数的初始化构造列表中初始化 { q = 40; } void fun1()const { m++; //错误.const成员是常量,不能改变其值. n++; //正确.static变量n属于类,但是每个对象的函数都可以访问和改变它. q++; //错误.const成员函数不能改变数据成员的值. } static void fun

Linux中chown和chmod的区别和用法

Linux中chown和chmod的区别和用法(转) chmod修改第一列内容,chown修改第3.4列内容: chown用法: 用来更改某个目录或文件的用户名和用户组. chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径) 例1:chown root:root /tmp/tmp1 就是把tmp下的tmp1的用户名和用户组改成root和root(只修改了tmp1的属组). 例2:chown -R root:root /tmp/tmp1 就是把tmp下的tmp1下的所有文件的属组都

[C/C++] extern关键字详解以及与static、const区别

extern用法详解: 1. 声明外部实体 声明外部全局变量或对象,一般用于头文件中,表示在其它编译单元内定义的变量,链接时进行外部链接,如: extern int ivalue; 此时的extern是必须的,省略了extern编译器将视为定义而不是声明,一般地在源代码中定义变量并进行初始化,在头文件中使用extern声明变量. 类似地用于声明外部全局函数,表示该函数在其它编译单元中定义,如: extern void func( void ); 此时的extern可以省略. 2. 声明函数的编译

OC中extern,static,const的用法

1.const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 例如 NSString *const SIAlertViewWillDismissNotification;修饰的是SIAlertViewWillDismissNotification 被const修饰的变量是只读的 2.static的作用: 修饰局部变量: 1.延长局部变量的生命周期,程序结束才会销毁. 2.局部变量只会生成一份内存,只会初始化一次. 3.改变局部变量的作用域. 修饰全局变量 1.只能在

小胖说事9------iOS xcode6中新建空工程和在iPhone5s上的程序界面只有iPhone4上的大小

升级xcode6之后,直接建立Empty工程后发现,这是太坑,真的是什么都没有啊.只能换个方法了 总结如下: 1.新建一个single view application 2.打开 Info.plist(别告诉我不知道去哪里找info.plist),删除里面的 Launch screen interface file base name以及 Main Main storyboard file base name 3.删除Main.storyboard以及LaunchScreen.xib 4.修改A

ios 中tableview和scrollView的区别

scrollView: 1. 介绍scrollView一些属性     1>.要想使用scrollView必须做两件事 1).设置scrollView内容 2).设置contentSize (滚动范围) 2>.其他属性         1). contentOffset(滚动位置)         2). contentInset(额外增加的滚动区域)         3). bounces (设置UIScrollView是否需要弹簧效果) 4). crollEnabled (设置UIScro

【原】iOS中KVC和KVO的区别

在iOS开发中经常会看到KVC和KVO这两个概念,比较可能混淆,特地区分一下 KVC(Key Value Coding) 1> 概述 KVC:Key Value Coding,键值编码,是一种间接访问实例变量的方法. KVC 提供了一个使用字符串(Key)而不是访问器方法,去访问一个对象实例变量的机制. 2> KVC部分源码(头文件) 1 // NSKeyValueCoding.h 2 @interface NSObject(NSKeyValueCoding) 3 4 + (BOOL)acce

一张图让你明白IOS中bounds和frame的区别

很多人在学习的就搞混了bounds和frame的区别,大家可以看看这张图就会明白它俩的区别: frame: 该view在父view坐标系统中的位置和大小.(参照点是,父亲的坐标系统) bounds:该view在本地坐标系统中的位置和大小.(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点) center:该view的中心点在父view坐标系统中的位置和大小.(参照点是,父亲的坐标系统) 看上图中,如果将ViewA的bounds设置为(-200,-100,550,400)