static和extern static和const extern和const的联合使用

8 篇文章 0 订阅
staticextern使用
先了解作用,才知道怎么使用。
 static
作用 :
 *
修饰局部变量
 1.
延长局部变量的生命周期 , 程序结束才会销毁。
 2.
局部变量只会生成一份内存 , 只会初始化一次。
 3.
改变局部变量的作用域。
 
- ( void )touchesBegan:( NSSet < UITouch *> *)touches withEvent:( UIEvent *)event{
   
// static 修饰局部变量
   
static int i = 0;
    i++;
    NSLog(
@"%d",i);
  
}

 * 修饰全局变量
 1. 只能在本文件中访问 , 修改全局变量的作用域 , 生命周期不会改
 2.
避免重复定义全局变量
 
全局变量:只有一份内存,所有文件共享,与 extern 联合使用。
int a = 20;
static 修饰全局变量
static int age = 20;


   extern作用:
 * 只是用来获取全局变量 ( 包括全局静态变量 ) 的值,不能用于定义变量
 extern
工作原理 :
 * 先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找。




staticconst联合使用

 static const 修饰全局变量
 static 修饰全局变量 , 修改作用域 . 表示在当前文件中使用
 const 修饰变量 . 变量只读
  静态全局只读变量

当前字符串只能在本文件使用 , 并且只读 , 不能改
iOS staic const 常用使用场景,是用来代替宏,把一个经常使用的字符串常量,定义成静态全局只读变量
static NSString * const name = @"123";


externconst联合使用
什么使用 static, 使用全局 , 就看下当前字符串常量是否需要被其他文件共享
如果需要共享 , 使用全局 , 不需要共享使用 static

  • static与const组合:在每个文件都需要定义一份静态全局变量。
  • extern与const组合:只需要定义一份全局变量,多个文件共享。


全局常量正规写法:开发中便于管理所有的全局变量,通常搞一个GlobeConst文件,里面专门定义全局变量,统一管理,要不然项目文件多不好找。

GlobeConst.m
#import <Foundation/Foundation.h>
定义全局变量
全局只读变量

/*********************** 首页 ***************************************/
NSString * const  firstNameKey = @“ firstName " ;
/*************************** 首页 ***********************************/

/*********************** 发现 ***************************************/
NSString * const  findNameKey = @“ findName " ;
/*************************** 发现 ***********************************/



GlobeConst.h
#import <Foundation/Foundation.h>
声明
UIKIT_EXTERN = extern
/***********************首页***************************************/
UIKIT_EXTERN  NSString * const firstName;
/*********************** 首页 ***************************************/
/*********************** 发现 ***************************************/
UIKIT_EXTERN  NSString * const findName;
/*************************** 发现 ***********************************/

#ifdef __cplusplus
#define UIKIT_EXTERNextern "C" __attribute__((visibility ("default")))
#else
#define UIKIT_EXTERN        extern __attribute__((visibility ("default")))
#endif


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值