Не могу удалить все экземпляры определенного класса

Используя метод делегата, я создаю экземпляр класса с именем mv, я хочу иметь кнопку очистки, которая удаляет все его экземпляры.

Поэтому я решил добавить их в mutableArray:

- (void)viewDidLoad
{
    [super viewDidLoad];
    mvArray = [[NSMutableArray alloc] initWithCapacity:0];

метод:

-(void)addItemViewController:(VCDecorations *)controller didChooseImage:(UIImage *)image    
{
    if (image) {
        self.imageDecoration = image;
        mv = [[MovableImageView alloc]initWithImage:image];
        [mvArray arrayByAddingObject:mv];
         NSLog(@"%@",mvArray);
         NSLog(@"%d",(integer_t)mvArray.count);   
        [self.view addSubview:mv];
    }

а также

- (IBAction)doClearBtn:(id)sender {
    [mvArray removeAllObjects];
}

Но похоже, что экземпляр не добавлен. журнал это:

2013-10-18 16:06:38.149 manning1[13498:a0b] 0 
2013-10-18 16:06:42.105 manning1[13498:a0b] ( ) 
2013-10-18 16:06:42.106 manning1[13498:a0b] 0
2013-10-18 16:06:45.341 manning1[13498:a0b] ( )

2 ответа

Замещать [mvArray arrayByAddingObject:mv]; с [mvArray addObject:mv];

arrayByAddingObject: возвращает новый массив, который вы игнорируете.

Избегайте создания массива с нулевой емкостью

mvArray = [[NSMutableArray alloc]initWithCapacity:0];

Используйте это, например:

mvArray = [NSMutableArray new];

Основная проблема заключается в том, что вы должны использовать этот метод для добавления объекта в ваш массив:

[mvArray addObject:mv];

[mvArray arrayByAddingObject: mv]; - это возвращает новый массив, поэтому вам придется использовать его следующим образом: mvArray = [mvArray arrayByAddingObject:mv]; - но это не имеет смысла делать это.

Другие вопросы по тегам