extern static const inline

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中,而不需要进行相互调用。

你可能感兴趣的:(extern static const inline)