我有一个非常简单的项目。极度减弱。它所做的只是将一些文本加载到NSTableView中。而已。但它使用了一个名为“修订”的新窗口和控制器。新NSWindow与NSTableview崩溃
只要新窗口变为活动状态,就会崩溃或者锁定。控制台中没有错误。如果它位于AppDelegate窗口的后台,它似乎会加载正确的信息。我可以看到桌子完美地填充了。但只要我点击窗口并使其处于活动状态,就会崩溃/锁定。
这使我疯狂。我知道它与内存管理有关,但我无法弄清楚在哪里,如何或为什么。
注意,我在XCode 4.2中,没有更多的释放(除非我改变某些设置,当然)。
在
AppDelegate.h
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
@end
AppDelegate.m
#import "AppDelegate.h"
#import "Revisions.h"
@implementation AppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
Revisions *rev = [[Revisions alloc] initWithWindowNibName:@"Revisions"];
[rev loadWindow];
}
Revisions.h
#import <Cocoa/Cocoa.h>
@interface Revisions : NSWindowController
{
IBOutlet NSTableView *quicktimesList;
IBOutlet NSTableView *unusedDataList;
}
@end
Revisions.m
所有连接#import "Revisions.h"
@implementation Revisions
- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
if (self) {
// Initialization code here.
}
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
NSLog(@"Creating number of rows.");
return 10;
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
NSLog(@"Starting Loop.");
NSString *words = [[NSString alloc] initWithFormat:@"Row %i", rowIndex];
NSLog(@"Looping %i", (int)rowIndex);
return words;
}
@end
“我知道它与内存管理有关......”基于什么理由? – 2011-12-14 09:26:08