Разница в настройке массивов - PullRequest
0 голосов
/ 23 ноября 2011

В моем приложении мне нужно постоянно менять содержимое одного NSMutableArray. Я использовал этот метод

myArray = [NSArray arrayWithObjects:object1,object2,object3,nil];

Я делал это несколько раз, и все прошло нормально, пока я не заметил, что при выходе из приложения происходит сбой приложения. Я изменил способ установки содержимого myArray на:

[myArray setArray:[NSArray arrayWithObjects:object1,object2,object3,nil]];

и этого было достаточно, чтобы остановить сбои и все нормально работать. Но мне просто любопытно, что там происходит внутри, что приводит к сбою приложения при использовании первого метода (и, кстати, почему происходит сбой не сразу, а только когда я вытаскиваю представление из стека?) И ничего не влияет при использовании второй.

1 Ответ

4 голосов
/ 23 ноября 2011

В первом случае вы устанавливаете myArray так, чтобы он указывал на автоматически выпущенный объект.Во втором случае вы говорите myArray (предположительно существующему экземпляру NSMutableArray на тот момент) заменить любое содержимое, которое он имеет, содержимым другого массива.

Вам необходимо прочитать правила управления памятью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...