我对使用 ARC 在 iOS(我认为是 MacOSX)中声明可变对象的两种类型存在理论上的疑问。
在类扩展中声明 NSMutableArray 有什么区别,如下面的代码:
@interface MyViewController ()
@property (copy) NSMutableArray* myMutableArray;
@end
//Class implementation
@implementation MyViewController
...
- (void)viewDidLoad
{
_myMutableArray = [@[] mutableCopy];
}
并以这种方式声明同一个数组
@interface MyViewController ()
@property (nonatomic, strong) NSMutableArray* myMutableArray;
@end
//Class implementation
@implementation MyViewController
...
- (void)viewDidLoad
{
_myMutableArray = [@[] mutableCopy];
}
哪一个更好?我已经看过这两个版本,显然两者都可以正常工作。但是我想知道哪一个是最好的选择。我知道“复制”关键字是对属于具有可变/不可变对的类集群的一部分的类使用复制。所以在这种情况下,它似乎是正确的选择。但是使用“copy”关键字和“mutableCopy”属性(如第一个示例)对我来说似乎是重复的。我错了吗?谢谢!