绑定,属性和对象持久性

时间:2014-06-17 22:27:55

标签: objective-c macos cocoa object-persistence

第一:我真的希望我把问题放在正确的位置,所以如果我走错了路,请纠正我......!

我有一个窗口来显示在表格视图中间隔更新的数据。此数据由Controller对象管理,该对象是tableview的数据源。 WindowController具有绑定到IB中的Controller对象的控制器属性:

@implementation WindowController

- (id) initWithWindowNibName:(NSString *)windowNibName {
    self = [super initWithWindowNibName:windowNibName];
    if (self) {
        _controller = [[Controller alloc] init];
    }
    return self;
}

- (void) windowDidLoad {
...

此外,我有一个WindowHandler类,它有一个静态引用' WindowController'使用类方法打开和关闭窗口:

static WindowController * windowController = nil;

@implementation WindowHandler

+ (void) initialize {
    if (self == [WindowHandler class]) {
        if (!windowController) {
            windowController = [[WindowController alloc] initWithWindowNibName:kWindowNibKey];
        }
    }
}

+ (void) showWindow:(id)sender {
    [windowController showWindow:sender];
}

...

因为我想在第一次打开窗口之前监视窗口中显示的数据,所以我在[WindowHandler initialize] {{{}}中AppDelegate applicationDidFinishLaunching: 1}}。这将启动WindowController,从而启动Controller对象。 Controller启动后开始监控数据,这是我想要的结果。

第一次打开窗口时会出现问题:启动Controller对象的新实例,显然是在加载窗口笔尖时。从这时起,两个Controller对象正在运行并观察数据,这不仅是不必要的,而且还会增加CPU使用率。此外,我怀疑这种情况很少会导致崩溃(有时候我会得到例外情况说' insertRowsAtIndexes:withRowAnimation:在更新可见行时不会发生!')。

我想在对象属性的概念中或者在绑定的概念中我会遗漏一些东西。 有什么我做错了吗?或者有一种很好的方式来做我想做的事情? 任何帮助赞赏!提前谢谢!

0 个答案:

没有答案