gpt4 book ai didi

objective-c - 保留数组上的 dealloc 崩溃。程序收到信号 : “EXC_BAD_ACCESS”

转载 作者:行者123 更新时间:2023-11-28 18:27:05 29 4
gpt4 key购买 nike

我在 TableView Controller 的 dealloc 中卡在了 EXC_BAD_ACCESS” 崩溃中。释放被赋予保留属性的 NSMutableArray 时会发生崩溃。我有第二个 NSMutableArray,它也被赋予了保留属性,但它的释放不会导致崩溃。请查看以下代码,看看我是否忽略了有关内存管理的内容。谢谢。

在我的头文件中,我有以下内容:

@interface selectSourcesTableViewController : UIViewController  <UITableViewDelegate, UITableViewDataSource> {
NSMutableArray *selectedNames;
NSMutableArray *selectedAvailability;
}

@property (retain, nonatomic) NSMutableArray *selectedNames;
@property (retain, nonatomic) NSMutableArray *selectedAvailability;

在我的实现中,我有以下内容:

@implementation selectSourcesTableViewController
@synthesize selectedNames;
@synthesize selectedAvailability;

- (void)viewDidLoad {

NSArray *names = [selectedSourceFileContent objectForKey:@"selectedNames"];
selectedNames = [[NSMutableArray alloc] initWithObjects: nil];

NSArray *availability = [selectedSourceFileContent objectForKey:@"selectedAvailability"];
selectedAvailability = [[NSMutableArray alloc] initWithObjects: nil];

for (int i=0; i < [names count]; i++) {
NSString *aName = [names objectAtIndex:i];
[selectedNames addObject: aName];
NSString *anAvailability = [availability objectAtIndex:i];
[selectedAvailability addObject: anAvailability];
}
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: kCellIdentifier];

...

for (int i=0; i < [selectedNames count]; i++) {
if ([contentForThisRow isEqualToString:[selectedNames objectAtIndex:i]]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
}

- (void)dealloc {
[super dealloc];
[selectedNames release];
[selectedAvailability release];
}

上面显示的代码显示了这两个数组的唯一用途。

所以,当 selectedNames 被释放时,没有什么不好的事情发生,但是当 selectedAvailability 被释放时,我遇到了 EXC_BAD_ACCESS 崩溃。

最后的观察。启动 xcode 后我第一次运行此代码时没有崩溃。此后,每次我重新运行该应用程序时它都会崩溃。

有什么想法吗?

最佳答案

[super dealloc]

需要在您自己的 dealloc 方法中最后调用,而不是首先调用。

关于objective-c - 保留数组上的 dealloc 崩溃。程序收到信号 : “EXC_BAD_ACCESS” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6147291/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com