1、static关键字的作用:
static修饰的变量,程序只会为这个变量分配一次内存,当该变量受到修改时,在其作用域内,都是共享的。
2、const关键字
const int a; 和 int const a; ->a 表示常整型数
const int *a; -> 换种方式方便理解(const int) *a; *a指针代表指向常整型数的指针,常整型数不允许修改,但是指向常整型数的指针允许修改
int const *a; -> int (const *a); const修饰*a指针,代表指针不允许修改
int const *a const; -> (int const) (*a const);常整型数常指针,都允许修改
3、nonatomic 和 atomic关键字
nonnatomic表示属性为非原子属性,对属性赋值时,不加锁,多线程操作时,提高访问性能的同时,不能保证多线程情况下属性值获取的正确性
atomic表示属性为原子属性,@property默认情况下为atomic属性,多线程情况下,atomic修饰的属性的setter和getter方法在收到访问时,在一条线程访问该方法时,系统会给该方法加锁,阻止其他的访问。开发iOS程序时一般都会使用 nonatomic 属性。但是在开发 Mac OS X 程序时,使用 atomic 属性通常都不会有性能瓶颈
4、内存管理的关键字strong、weak、copy、assign
strong: ARC环境下等同于retain,声明属性的默认关键字。(浅拷贝,只拷贝指针)
weak:对象销毁后会自动置为nil,防止野指针,定义的是一种“非拥有关系”,设置新值时,设置方法既不保留新值,也不释放旧值。必须修饰OC对象
copy:深拷贝,拷贝内容,复制出一份不可变的内容,可以用来修饰string,array,dictionary等具有可变类型的对象,防止数据传递过程中被修改。block使用copy修饰,是MRC时,block是在栈中,使用copy能将block放到堆里,ARC中,使用copy和strong是一样的,但是推荐使用copy
assign:一般用来修饰iOS基础数据类型和c语言数据类型,可以修饰非OC对象
5、IBInspectable关键字
可通过IBInspectable关键字为storyboard和xib的属性面板中添加自己定制的属性