static
1. static 修饰全局变量,只有本文件或者引入本文件的文件可访问,修改全局变量的作用域,生命周期不会改;防止在多个相互没有引用的文件中写入相同的全局变量产生的重复原因而编译报错;
2. static 修饰局部变量,app启动后,若所在方法被执行多次,但它所修饰的局部变量局部变量只会生成一份内存,只会初始化一次;
初始化的时候不能用变量赋值;之后的赋值可以用变量;
const
1. const后面修饰的是谁,谁不可变;
eg. NSString const * str1 = @"123"; *str1不可变,*str1是存储 @“123”常量地址指针值 的那块内存的地址;
所以str1可以改为其他的常量,eg:str1 = @"456"; 存储指针的那块内存的地址值并没有改变。
eg. NSString *const str2 = @"123"; str2 不可改变,str2是指针,是常量@“123”在常量区的那块地址值;指向@“123”的指针指向不可改变;此时若是可变字符串,那么字符串可以拼接等内容变更操作,但是指针指向是不可变的。
2. so:
NSString *const str1
不可以修改常量指针指向的原内存中的内容,常量指针不可以指向其他的内存
NSString const *str2"
不可以修改常量指针指向的原内存中的内容,常量指针可以指向其他的内存
NSMutableString const *str1
可以修改常量指针指向的原内存中的内容,常量指针可以指向其他的内存
NSMutableString *const str2
可以修改常量指针指向的原内存中的内容,常量指针不可以指向其他的内存