OS X:如何使用ARC和基于块的表单API保留控制器?

时间:2014-04-16 15:30:19

标签: objective-c memory-management automatic-ref-counting objective-c-blocks nswindow

在OS X 10.9上,有一种新的基于块的表单呈现方法:

    [window beginSheet:[myWindowController window] 
        completionHandler:^(NSModalResponse returnCode) {
            NSLog(@"done");
    }
    ];

问题是如果myWindowController未在完成块中引用,则会立即释放{{1}}。当窗口被解除时,这会导致崩溃。使用ARC时,如何确保工作表的窗口控制器通过模态会话?

1 个答案:

答案 0 :(得分:1)

我最初是以评论作为评论,但我将此作为答案:

您应该指定" myWindowController"在任何对象(NSWindowController或其他任何东西)中产生强大的属性。

E.G。,使用

@property (strong) NSWindowController *mySpecialSheet;