iOS基本功

【iOS】属性关键字

2019-04-26  本文已影响10人  an_Anthony

属性(property)是Objective-C封装对象数据的一个重要特性。声明一个属性要加上特定的关键字。不同关键字修饰的属性在内存管理中有不一样的结果。

下面是Objective-C中常用关键字的含义。

strong:指向并拥有该对象。其修饰对象引用计数会增加1.只要引用计数不为0,该对象就不会销毁。可以手动设为nil销毁该对象。

retain:在ARC中与strong类似。

weak:指向但不拥有该对象。其修饰的对象引用计数不会增加,weak修饰的对象消失后会自动将指针设为nil,主要用来避免循环引用。

copy:建立一个和新对象内容相同且引用计数为1的对象,指针指向这个对象并释放之前的旧对象。有对应可变数据类型的不可变数据类型都应该用copy来修饰,例如NSString、NSArray、NSDictionary。

assign:修饰基本数据类型,例如NSInteger、CGFloat。这些数值都存在栈中。assign如果用来修饰对象会造成野指针。

atomic:原子性,保证setter和getter的完整性。但不是绝对的线程安全。可以用@synchronized加锁。

nonatomic:不保证setter和getter。

基本数据类型的默认关键字为:atomic、readwrite、assign

普通属性的默认关键字为:atomic、readwrite、strong

   

上一篇 下一篇

猜你喜欢

热点阅读