添加对象后,NSMutableArray的计数为0

时间:2011-06-01 18:10:00

标签: iphone objective-c cocoa-touch ios4 nsmutablearray

喜 我有一个带有两个实例变量的对象(objectA),NSString和NSDate。 我有另外两个对象 一个用tableView和添加按钮(objectB) 当你按下添加按钮(objectC)时,一个以模态方式呈现,在这个对象视图中你可以输入名称和日期,当这个对象(objectC)被解雇时,我创建了一个带有名称和日期的新对象(objectA)。

objectB有NSMutableArray,我想将objectA添加到这个数组,所以它可以出现在tableView中,我在objectC.m中这样做

- (IBAction)saveButtonPressed {
   objectA *a = [[objectA alloc] init];
   [a setName:[myUITextField text]];
   [a setDate:[myDatePicker date]];

   objectB *b = [[objectB alloc] init];
   [[b myMutableArray] addObject:a]];
   [[b myMutableArray] count]; // count == 1 here but when i go back to objectB implementation it will be 0

}

并且应用程序崩溃

任何想法?

谢谢,

编辑: 崩溃消失我只是编辑objectA的init方法 但myMutableArray仍为0

在objectB.m

- (id)initWithStyle:(UITableViewStyle)style {
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {

        UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                                             target:self 
                                                                             action:@selector(addBarButton:)];
        [navItem setRightBarButtonItem:bbi];
        [bbi release];

        myMutableArray = [[NSMutableArray alloc] init];
    }
    return self;
}

- (void)addBarButton:(id)sender {
    myObjectC = [[objectC alloc] init];
    [self presentModalViewController:myObjectC animated:YES];

}

我也有objectB.h

@property (nonatomic, retain) NSMutableArray *myMutableArray;

saveButtonPressed方法中objectC中myMutableArray的计数现在为1 但是当我回到objectB tableView我想要显示myMutableArray时仍然是0

Edit2: 我放了很多NSLog之后 我发现当我在saveButtonPressed:方法中创建新的objectB时,myMutableArray的计数将为1 但是当我回到我的tableView(objectB)时,myMutableArray又回到了0 也许是因为我在objectC中创建了对象B的新的和单独的对象(saveButtonPressed :) 也 如果我不在saveButtonPressed:方法中分配和初始化objectB objectB将为nil,我无法将objectA放在myMutableArray

所以我想我必须得到原始对象B的指针,但是如何?

1 个答案:

答案 0 :(得分:4)

因为在你添加一个对象后count == 0,我猜它是两件事之一:

  1. [b myMutableArray]返回nil,因为您忘记在objectB的init函数中分配myMutableArray(例如myMutableArray = [[NSMutableArray alloc] initWithCapacity:10];

  2. [b myMutableArray]每次调用时都会返回一个新的可变数组。也许你正在做类似的事情:

  3. - (NSMutableArray *)myMutableArray {
      return [NSMutableArray arrayWithCapacity:10];
    }
    

    听起来像(1)可能是可能的原因,但它仍然没有解释崩溃。发生崩溃时,您在调试控制台中看到了哪些错误消息?