iOSiOS开发实用技术iOS

const,static,extern关键字用法和技巧

2016-09-14  本文已影响789人  键盘风筝

来实现诺言了,接着上篇的承诺,给大家说一下这几个关键字的用法


其实这几个关键对于基础来讲还是很重要的,无论是面试当中被提及的频率,还有在项目当中的使用,先跟大家说一下最基本的解释,也就是有关面试题的回答

定义和简单使用

const

1.const只修饰自己右边的变量.
2.被const修饰的变量是只读的,不可更改.
注:这就是为什么推荐使用const来替代宏定义,宏定义不会报错,并且是可变的

//修饰基本变量
const int a = 10;//a是只读变量
int const b = 20;//b是只读变量
//由此可见无论const在int的哪一边,a和b都是只读变量.
//修饰指针变量
const int *temp;//*temp只读 temp只读
int const *temp;//*temp只读 temp只读
//这两种其实也是一样的

int *const temp;//因为const在*的左边,因此*temp是变量 temp是只读变量

const int *const temp;*temp只读变量 temp只读变量
int const *const temp;*temp只读变量 temp只读变量
//这两个看起来是一样的,第一个const位于*temp的右侧,第二个const位于temp的右侧,所以两者都是只读的

static

作用:
修饰局部变量

修饰全局变量

//简单实用场景
//UITableView的代理方法,设置重用池的唯一标识符
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   static NSString *reuse = @"reuse";
}

extern

他们几个在项目当中的经典使用场景(重磅)

static和const的组合使用

#define Animation_timer 0.3
//他的坏处显而易见,没有指明常量类型,而且如果其他地方有相同名字,他会被替换修改,并不报错,编译的时候也特别耗时

解决办法

//包含了NSTimeInterval的类型信息,有助于开发文档的编写和后续的维护,并且不可修改,相同名字会报错
static const NSTimeInterval kAnimationTimer = 0.3;
[UIView animateWithDuration:kAnimationTimer animations:^{
        
    }];

extern和const的组合使用

有的时候需要公开常量,就像你的女朋友需要知道今天你花了多少钱,但是你花钱的多少他是不会干涉的,所以这个时候你只需要给外界暴露出一个常量

 #import <UIKit/UIKit.h>
@interface ViewController : UIViewController
//只给外界暴露出一个制只读变量money
extern NSString *const money;
@end
#import "ViewController.h"
NSString *const money = @"100元";

这样就可以外界读取到,但是不能改变

上一篇下一篇

猜你喜欢

热点阅读