0

使用委托方法创建名为 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] ( )
4

2 回答 2

2

避免制作容量为 0 的数组

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

使用例如:

mvArray = [NSMutableArray new];

主要问题是您应该使用此方法将对象添加到数组中:

[mvArray addObject:mv];

[mvArray arrayByAddingObject:mv]; - 返回新数组,因此您必须像这样使用它: mvArray = [mvArray arrayByAddingObject:mv]; - 但这样做没有意义。

于 2013-10-18T13:19:20.307 回答
2

替换[mvArray arrayByAddingObject:mv];[mvArray addObject:mv];

arrayByAddingObject:返回一个您忽略的新数组。

于 2013-10-18T13:19:26.517 回答