IOS中级篇——何时使用copy, strong, weak, assign关键字定义属性

时间:2022-09-14 17:05:15

1. strong:除NSString/block以外的OC对象

@property (nonatomic, strong) NSSArray *array;

2.weak:各种UI控件(但不是绝对,也有控件要使用strong属性的)

@property (nonatomic, weak) UIButton *button;

3.assign:CGFloat, NSInteger等基本数据类型、枚举、结构体(非OC对象)

@property (nonatomic, assign) CGFloat width;

4.copy: copy:创建的是不可变副本(如NSString、NSArray、NSDictionary)和对应的可变副本mutableCopy(如NSMutableString等)

@property (nonatomic, copy) NSString *str;


@property内存管理策略的选择

1.非ARC

1> copy : 只用于NSString/block 2> retain : 除NSString/block以外的OC对象 3> assign : 基本数据类型、枚举、就够提(非OC对象),当两个对象相互引用,一端用retain,一端用assign

2.ARC

1> copy : 只用于NSString/block 2> strong : 除NSString/block的OC对象 3> weak : 当2个对象相互引用,一端用strong,一端weak 4> assign : 基本数据类型、枚举、结构体(非OC对象)