虽然我发现自己熟悉一堆编程语言,但现在我已经习惯了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 。我知道这意味着什么,但我不知道为什么我会得到这个以及如何解决这个问题。
感谢您的帮助。 :)
答案 0 :(得分:1)
你在这里完成了发布,
NSString *title = [[NSString stringWithString:[[aTableColumn headerCell] stringValue]] autorelease];
-[NSString stringWithString:]
已自动释放返回的值,因此您无需再次调用它。