static
static 可以用来修饰静态变量,在iOS中,如果使用static修饰全局变量,则全局变量只能在当前文件中访问;如果使用static修饰函数中的局部变量,该局部变量只能在方法内被访问,但是只会创建一次,下次再调用该方法时,不会重新创建该变量,只会重新调用变量,也就是说,static修饰的变量,一旦创建,会一直存储在内存中,直至整个应用被回收。
#import "test1.h"
@implementation test1
+ (void) test {
//静态变量只会创建一次,并且作用范围为当前域,下次调用test方法时,会直接引用之前创建的;
static int a =10;
a++;
NSLog(@"--a--%d",a);
}
在test1中定义了test函数,我们通过main函数调用
int main(int argc, const char * argv[]) {
@autoreleasepool {
[test1 test];
[test1 test];
}
return 0;
}
连续调用的结果是:
--a--11
--a--12
连续调用两次后,第二次a==12时,说明a只创建了一次。
const
const用于修饰常量。一旦赋值,就不能被修改。
NSString * const str = @"test";
str = @"1" //此处会报错
extern
用于获取全局变量的内容,当一个类文件中定义了一个全局变量后,可以在其他文件中,通过extern进行引用。
static修饰全局变量时,全局变量只能在当前类使用
--a
#import "test1.h"
int i = 10;//在test1中定义一个全局变量
#import "test2.h"
@implementation test2
+ (void) hello {
extern int i;
NSLog(@"--i--%d",i);
}
输出结果为:
--i--10
inline
liline的作用类似于宏,一个函数a用其修饰,当另外的一个函数b调用该函数时,在编译过程中,会将a直接加入到b中,而不需要进行相互调用。