EXC_BAD_ACCESS для простого массива UIImageViews - PullRequest
1 голос
/ 02 февраля 2011

Что не так с этим кодом?

в интерфейсе:

NSArray *myImages;
@property (nonatomic, retain) NSArray *myImages;

реализация:

NSArray *array = [NSArray arrayWithObjects:
                [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]],
                [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2.png"]],        
                [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image3.png"]],
                nil];
self.myImages = array;
[array release];

Если я регистрирую myImages сразу после его инициализации, онправильно регистрирует массив UIImageViews.Однако позже в приложении, когда я пытаюсь получить доступ к self.myImages из другого метода, я получаю EXC_BAD_ACCESS.Это сохраняется в интерфейсе.В чем проблема?

Ответы [ 3 ]

5 голосов
/ 02 февраля 2011

Не выпускать array. Используя arrayWithObjects:, он вернет автоматически освобожденный объект. В некотором смысле, вы выпускаете его дважды. Альтернатива:

[[NSArray alloc]initWithObjects:...]

Тогда вы можете отпустить array.

См. Статью Apple по управлению памятью:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html%23//apple_ref/doc/uid/20000043-BEHDEDDB

2 голосов
/ 02 февраля 2011

arrayWithObjects - это удобный метод, который возвращает объект с автоматическим освобождением, поэтому удалите

[array release];

Кроме того, вы теряете память, выполнив следующее:

[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]]

Поскольку на этот раз imageView не работаетт выпущен.

1 голос
/ 02 февраля 2011

arrayWithObjects возвращает объект с автоматическим освобождением, вы перезапускаете его.Смотрите здесь http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/MemoryMgmt/Articles/mmRules.html%23//apple_ref/doc/uid/20000994-BAJHFBGH

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