gpt4 book ai didi

objective-c - NSTableView 带有源代码,导致 EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-12-03 17:11:33 25 4
gpt4 key购买 nike

虽然我发现自己熟悉了很多编程语言,但有一段时间我还无法习惯 Cocoa/Objective-C。

我想用一些内容填充 NSTableView,代码如下:

- (int) numberOfRowsInTableView:(NSTableView *)aTableView {
return (int)[settingsPlist count];}

- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex {
NSString *title = [[NSString stringWithString:[[aTableColumn headerCell] stringValue]] autorelease];
NSLog(title); // debug
NSLog(@"%i",rowIndex); // debug
if([title isEqual: @"Plugin Name"]) {
return [[settingsPlist objectForKey:[NSString stringWithFormat:@"%i",rowIndex]] objectForKey:@"name"];
} else {
return @"(n/a)";
}
}

settingsPlist填充了plist的内容,如下所示:

<plist version="1.0">
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>Test-Plugin</string>
<key>version</key>
<string>0.1</string>
<key>type</key>
<string>Car</string>
<key>creator</key>
<string>Icke</string>
<key>checksum</key>
<string>0x32</string>
<key>link</key>
<string>http://</string>
</dict>
</dict>

问题:它对于一行工作正常(您可以通过查看 NSLog(title);NSLog 抛出的控制台输出来判断(rowIndex);),但是之后,调试器会停止执行,并抛出 EXC_BAD_ACCESS。我知道这意味着什么,但我不知道为什么会出现这个问题以及如何解决这个问题。

感谢您的帮助。 :)

最佳答案

你在这里过度释放了,

    NSString *title = [[NSString stringWithString:[[aTableColumn headerCell] stringValue]] autorelease];

-[NSString stringWithString:] 已经自动释放了返回值,因此您不需要再次调用它。

关于objective-c - NSTableView 带有源代码,导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24311907/

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