尽管我发现自己熟悉一堆编程语言,但是一段时间以来,我还是无法适应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:]
已经自动释放返回的值,因此您无需再次调用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句