Я хочу убедиться, что я понимаю ключевую концепцию свойств и владения переменной экземпляра класса, в данном случае используя NSArray.
Предположим, я передаю ссылку на NSArray
другому классу, иустановите для этого класса iVar.Например:
Первая техника
OtherClass.h
@property (nonatomic, retain) NSArray * otherClassArray;
, затем:
CurrentClass.m
otherclass.otherClassArray=myArray
Теперь, даже если OtherClass
сохраняет myArray
, если CurrentClass
изменит myArray
, то otherclass.otherClassArray
также изменится, верно?
Итак, это лучший способ сделать это, или я ошибаюсь, и выше все равно будет делать то, что я ожидал от следующего:
Вторая техника
CurrentClass.m
otherclass.otherClassArray=[NSArray arrayWithArray:myArray]
Теперь выполняется отдельная копия, поэтому любые изменения в myArray
не влияют на otherClassArray
, я прав илиоба эти подхода делают одно и то же?
ОБНОВЛЕНИЕ : Есть ли какая-то причина, по которой мой второй метод выше или не должен использоваться вместо использования copy
со свойством?Казалось бы, любой из этих методов приводит к новому NSArray, которым владеет мой класс.