MY_const/static/extern/define的基本

2017-02-04  本文已影响11人  _Weak

1. 宏的使用

  • 常用的字符串抽成宏(注: 宏只会分配一次内存存在静态区 测试方法: %p打印地址信息)
  • 常用的代码抽成宏

2. const的使用

  • 常量 只能修饰右边的变量:基本指针/对象
  • 当有字符串常量的时候, 苹果推荐我们使用const
  • 使用const修饰全局变量位只读, 放于变量左边
  • 使用const定义一个全局参数
//定义全局变量
NSString * const name = @"我是不可修改的";

//定义不可修改参数
-(void)test:(NSString * const)name{
    //name不可修改
}

//修饰指针变量
-(void)test:(int *const)p{
    //p指针第值不允许自己修改
}
int a = 10;
[self test:&a];

3. const与宏的区别

  • 编译时刻: 宏:预编译 const: 编译时
  • 编译检查: 宏:不会检查错误 const:会检查错误
  • 宏可以定义代码(好处)
  • 宏会造成编译缓慢(坏处)

4. static与const的使用

static的作用

  • 修饰局部变量
    延长局部变量的生命周期,只要程序运行, 局部变量就会一直存在, 只会分配一次内存
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    static int i = 0;//只分配一次内存, 断点调试
    i++;
    NSLog(@"点击次数: %i",i);
}
  • 修饰全局变量
    只会修改全局变量的作用域,表示只能当前文件内使用
      //定义静态全局变量,表示只能当前文件内使用
      static int const i = 0;

extern的作用

  • 只能声明一个变量,不能定义变量,不可初始化参数值

// 使用场景
extern int a;//调用其他文件的全局变量

5. static与const的联合使用

  • static和const修饰全局变量
    static修饰全局变量, 修改作用域表示在当前文件中使用
    const修饰变量,表示只读
    联合使用: 静态全局只读变量
static NSString * const name = @"我是不可修改的,只能在本文件中使用";

extern和const的联合使用

  • 定义.h和.m文件
  • .h文件
//声明
//定义全局变量
/**********首页模块**********/
UIKIT_EXTERN NSString * const name1;

UIKIT_EXTERN NSString * const name2;

UIKIT_EXTERN NSString * const name3;

UIKIT_EXTERN NSString * const name4;

UIKIT_EXTERN NSString * const name5;
/**************************/

>.m文件
>```
>//定义全局变量
>/**********首页模块**********/
>NSString * const name1 = @"123";

>NSString * const name2 = @"123";

>NSString * const name3 = @"123";

>NSString * const name4 = @"123";

>NSString * const name5 = @"123";
>/**************************/
>```
>- 使用方法
  导入.h文件,直接使用 name1


##6. class,superClass,super
>- super 编译修饰符, 不是指针, 指向父类的标志,本质还是拿当前对象去调用
>- 定义Person,SonPerson,在子类SonPerson中定义方法

-(void)testPerson
{
NSLog(@"%@ %@ %@",[self class],[self superclass],[super class]);
}

>- 打印结果

2017-02-04 16:33:38.113 super,superClass,super[22121:2140396] SonPerson Person SonPerson

































上一篇下一篇

猜你喜欢

热点阅读