Не могу удалить все экземпляры определенного класса
Используя метод делегата, я создаю экземпляр класса с именем 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]; - но это не имеет смысла делать это.