2011-11-04 81 views
3

我有一个应用程序需要从我的子视图访问模型数据。我一直在使用绑定来跨视图传递数据;然而,绑定到self似乎导致保留周期(dealloc永远不会被调用)。什么时候应该删除绑定,如果不在dealloc方法中?谢谢。如何防止绑定到自己导致的保留周期

P.S.我知道binding to a proxy object controller的方法,但我想尽可能避免使用它。

这里是我一直在做的一个例子:

// Top-level Project view 
@interface ProjectViewController : NSViewController { 
    FoldersView *foldersView; 
} 
@property (strong) NSObjectController *projectObjectController; // holds Project instance 
end 

// Displays folders 
@interface FoldersView : NSView { 
    FolderView *folderView; 
} 
@property (weak) NSObjectController *projectObjectController; // binded from parent 
@property (strong) NSArrayController *foldersArrayController; // binded to project.folders 
@end 

// Displays selected folder 
@interface FolderView : NSView 
@property (weak) NSArrayController *foldersArrayController; // binded from parent 
@property (strong) NSObjectController *folderObjectController; // binded to folders.selection 
@end 
+0

这看起来不错。它工作吗? – jrturton

+0

是的,它确实工作正常。但我认为绑定正在导致一个保留周期,以防止视图被释放。如果不在dealloc中,我们应该何时删除绑定?谢谢。 – panupan

+0

如果你有这个问题,我会建议编辑这个问题 - 这不是你最初的问题。 – jrturton

回答

1

的绑定是从MVC三位一体除去C部分,(样板代码)的首选方式。所以你处理这个问题的方法是正确的。