1、如果一个属性用copy修饰,比如@property (nonatomic, copy) NSArray<UIViewController *> *viewControllers;
,则重写这个属性时必须先对传入参数进行copy之后再给成员变量赋值;
- (void)setViewControllers:(NSArray<UIViewController *> *)viewControllers {
_viewControllers = [viewControllers copy];
}
2、如果重写的setter方法是“_viewControllers = viewControllers;”,没有copy之后再赋值,则当给viewControllers属性赋值一个NSMutableArray类型的对象比如marr时,之后对marr的修改比如添加元素也会影响viewControllers。