0
对于我的UITableView,我使用一个数组作为数据源。到目前为止一切正常。但是,我有一个奇怪的问题,那就是当我使用搜索字段并输入几个字符,然后我再次删除时,底层数组突然变空。下面的代码片段,这可能是相关的,了解我的问题:数组突然变空
宣言在我的.h
@interface dictionaryViewController : UIViewController <UITableViewDelegate>{
...
...
NSMutableArray *cardArray;
}
...
@property (retain) NSMutableArray *cardArray;
...
使用在我的.m代码:
@synthesize cardArray;
...
- (void)viewDidLoad {
[super viewDidLoad];
self.cardArray = [[NSMutableArray alloc] initWithObjects:nil];
...
}
我用数据填充数组从我的SQL数据库:
[self.cardArray addObject:[NSString stringWithFormat:@"%@ - %@", aQuestion, anAnswer]];
和代码内读取阵列的内容,如在cellForRow甲基OD:
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
thisCardIndex = [self.cardArray indexOfObject:cellValue];
...
}
最后我释放它,像这样(其实我曾与发布命令,为什么我用了removeObjects,而不是其他一些问题):
[self.cardArray removeAllObjects];
self.cardArray=nil;
在我做日志没有看到错误。然而,调试器显示代码与SIGABRT崩溃,并且在设置断点时我看到,原因是空的cardArray。
感谢您的支持。
逻辑会错somewhere..post乌尔整个的.m这里文件.. – 2012-03-19 20:03:51
在该方法是'[self.cardArray removeAllObjects]; self.cardArray =无;'?也许你应该发布更多的方法。发布命令有问题应该是红旗。调用'removeAllObjects'不是必需的。将数组属性设置为nil将向所有对象发送一个版本。所以如果你不得不调用'removeAllObjects',你正在掩盖一个不同的问题。 – SSteve 2012-03-19 20:32:05