喜 我有一个带有两个实例变量的对象(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的指针,但是如何?
答案 0 :(得分:4)
因为在你添加一个对象后count == 0,我猜它是两件事之一:
[b myMutableArray]
返回nil,因为您忘记在objectB的init函数中分配myMutableArray(例如myMutableArray = [[NSMutableArray alloc] initWithCapacity:10];
)
[b myMutableArray]
每次调用时都会返回一个新的可变数组。也许你正在做类似的事情:
- (NSMutableArray *)myMutableArray {
return [NSMutableArray arrayWithCapacity:10];
}
听起来像(1)可能是可能的原因,但它仍然没有解释崩溃。发生崩溃时,您在调试控制台中看到了哪些错误消息?