代码之家  ›  专栏  ›  技术社区  ›  Kaelin Colclasure

关于NSWindowController和NSPersistentDocument核心数据教程的问题

  •  0
  • Kaelin Colclasure  · 技术社区  · 14 年前

    NSPersistentDocument Core Data Tutorial 上面写着:

    1. 在nib文件中创建新的顶级对象的一个问题是,当您使用绑定时,对象会保留它绑定到的其他对象。这意味着必须断开绑定,以确保关闭文档时没有保留周期。此外,由于新控制器拥有的nib文件包含顶级对象,并且controllers类不从NSWindowController继承,因此需要在关闭窗口时释放顶级对象。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Kaelin Colclasure    14 年前

    正如下面的评论,我确实让它与NSWindowController子类一起工作,它似乎确实节省了不少代码。

    #import <Cocoa/Cocoa.h>
    
    @interface NewAccountSheetController : NSWindowController {
    @private
        BOOL isValidForInsert;
        NSManagedObjectContext * managedObjectContext;
        NSObjectController * objectController;
        NSObjectController * targetController;
    }
    
    @property (setter=setValidForInsert:) BOOL isValidForInsert;
    @property (nonatomic, retain) IBOutlet NSManagedObjectContext * managedObjectContext;
    @property (nonatomic, retain) IBOutlet NSObjectController * objectController;
    @property (nonatomic, retain) IBOutlet NSObjectController * targetController;
    
    - (void)beginSheetForWindow:(NSWindow *)window;
    
    - (IBAction)endSheet:(id)sender;
    
    @end
    

    下面是一个 Pastebin

    我不知道如何描述所需的绑定等,但如果您熟悉上述教程,我认为它们应该可以直接推断出来。:-)

        2
  •  0
  •   TechZen    14 年前

    在本例中,它讨论的是控制图纸而不是窗口。从技术上讲,工作表是一个窗口组件,而不是窗口本身,因此不能将NSWindowController子类用作控制器。窗口控制器不知道如何处理另一个窗口拥有的窗口。