2011-12-13 53 views
0

我有一个非常简单的项目。极度减弱。它所做的只是将一些文本加载到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 
+0

“我知道它与内存管理有关......”基于什么理由? – 2011-12-14 09:26:08

回答

2

好的。在处理Xcode 4.2中潜在的内存泄漏时,我会给你一些提示。

  1. 在为Mac编写软件时,建议在构建设置中启用垃圾回收。只需在构建设置的搜索栏中搜索“垃圾回收”并将其设置为“必需”即可。

  2. 如果您的项目中存在内存泄漏,只需按下“产品”菜单并点击“分析”即可。当菜单项显示时,它会分析您的项目是否存在潜在的内存泄漏并帮助您追踪它们。

希望这有助于!

+0

这样做了,约翰!非常感谢。如果你有第二个,你能给我发送一个好的源代码的链接,用于我在XCode 4.2中寻找的东西吗? – mxisaac 2011-12-13 23:34:25