我想在导航控件的表视图中列出目录中的文件。 它显示目录中的文件。 但每当我向下滚动时,我的模拟器就会崩溃。问题是什么? dirArray在.h文件中定义为NSArray * dirArray。
- (void)viewDidLoad {
[super viewDidLoad];
NSString *path = [[NSFileManager defaultManager]currentDirectoryPath];
NSFileManager *fileManager = [NSFileManager defaultManager];
dirArray = [fileManager contentsOfDirectoryAtPath:path error:nil];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section {
return [dirArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
NSString *fileName = [dirArray objectAtIndex:indexPath.row];
cell.textLabel.text = fileName;
return cell;
}
答案 0 :(得分:2)
你的问题是那个
dirArray = [fileManager contentsOfDirectoryAtPath:path error:nil];
将dirArray
指向一个自动释放的对象。因此,当您稍后访问它时,它将被取消分配。保留它。
dirArray = [[fileManager contentsOfDirectoryAtPath:path error:nil] retain];
或者更好,将其声明为属性并执行
self.dirArray = [fileManager contentsOfDirectoryAtPath:path error:nil];
答案 1 :(得分:0)
你应该创建你的数组的属性并@synthesize它。
或
你将分配数组并将其释放到dealloc中。