2017-01-17 7 views
-2

Если у меня есть 2 заявления вроде этого:Как выполняется назначение NSMutableArray с другими функциями NsMutableArray?

NSMutableArray * myArr1; 
NsMutableArray * myArr2; 

Если я сделать это ассигнование:

myArr1=myArr2; 

Am я копирование объектов myArr2 на myArr1, или как myArr1 тот же указатель, как myArr2 ?

Если это второй один, это значит, что если я сделать позже:

[myArr1 removeobjects...]; 

им удаление объектов myArr2?

И последний вопрос, если он работает так, мне нужно реализовать выделение? myArr1 [[NSMutableArray alloc] init];

Или должен ли я просто сделать alloc для myArr2 и оставить myArr1 точно так же, как указатель?

+0

Слишком много вопросов сразу. Назначение назначит указатель. Да, он будет удалять объекты из обеих переменных, поскольку они указывают на один и тот же массив. Третий вопрос зависит от вашего использования. – Sulthan

+0

Что вы наблюдали, когда пытались? – vikingosegundo

+0

beriefly: не копия, тот же указатель; да; Неа; сделать копию; – holex

ответ

1

Am я копирование объектов myArr2 на myArr1, или как myArr1 является же указатель, как myArr2?

(Q1) Вы делаете указатели одинаковыми, а не копируете элементы любого из массивов. Вы также (под ARC) неявно распоряжаетесь массивом, изначально указанным myArr1. Он будет выпущен, поскольку ссылки на него отсутствуют.

Итак, нет, (Q3) нет необходимости выделять myArr1 для начала.

(Q2) Если вы попробуете [myArr1 removeobjects...];, вы будете опустошать массив, на который указывают как myArr1, так и myArr2.