- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一些旧代码转换为 ARC。旧代码在 WindowController 中执行此操作:
@interface PreferencesController () <NSWindowDelegate>
@end
@implementation PreferencesController
-(void)windowWillClose:(NSNotification*) notification {
[self autorelease];
}
@end
我的 AppDelegate 有一个指向 WindowController 的强指针:
@property(strong) PreferencesController* preferencesCtrl;
在 PreferencesController 中,我是否需要声明一个返回到 AppDelegate 的(弱)指针,然后执行如下操作:
-(void) windowWillClose:(NSNotification *)notification {
[[self appDelegate] setPreferencesCtrl:nil];
}
最佳答案
嗯,你的想法是对的。
但我可以让你变得更简单。
将您的应用程序委托(delegate)设置为 NSWindowDelegate。
@interface AppDelegate : NSObject <NSApplicationDelegate, NSWindowDelegate>
@property (strong) PreferencesController* preferencesCtrl;
@end
@implementation AppDelegate
- (void)doAction
{
// create window
// ...
self.preferencesCtrl.window.delegate = self; // set window delegate
}
- (void)windowWillClose:(NSNotification *)notification
{
self.preferencesCtrl=nil;
}
@end
UPD由于您已经在使用 NSWindowDelegate 方法,我建议您创建另一个委托(delegate)协议(protocol),例如 PreferenceControllerDelegate
//in PreferenceController.h before class interface
@class PreferenceControllerDelegate
@protocol PreferenceControllerDelegate <NSObject>
- (void)preferenceControllerWindowWillClose:(PreferenceControllerDelegate *)sender;
@end
@interface PreferenceController : NSWindowController
//...
@property (nonatomic,weak) id<PreferenceControllerDelegate> delegate;
//...
@end
这样就很合适了。
关于cocoa - 弧: How do you release a WindowController when the user closes the Window?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30229964/
我能够找到当前打开的窗口: NSWindow *currentWindow = [NSApp keyWindow]; 但是我怎么知道哪个类控制这个窗口,即上面窗口的窗口 Controller ? 最佳
对于主题行缺乏具体性,我深表歉意,但我不完全确定如何对我的问题进行分类。这是一个高水平的问题,但我觉得人们必须一直遇到这个问题,我想知道他们如何处理这个问题。我对 Objective C 和面向对象编
谁能告诉我如何将位置 X 和 Y 返回到我的 WindowController NSTextField(testTextX 和 testTextY)? 我以编程方式创建了一个 windowContro
我被告知 awakeFromNib 应该只被调用一次,所以我很惊讶地看到它被我的 WindowController 调用了两次。我使用 IB 在 MainMenu.xib 中创建 WindowCont
当您第一次在 XCode 中创建应用程序时,它会在最低级别创建 AppDelegate.h/.m 和 MainWindow.xib 一旦您开始修改 Xib 以最适合您的设计需求 - 最好的做法是不再将
下面的代码在 2 年前运行 今天我尝试重建 AppDelegate.h #import #include #include #include @class EnterWindowControl
在我的 cocoa OS X 应用程序中,我有一个带有 xib 文件的WindowController,以及两个 ViewControllers使用 xib 文件,我在 WindowControlle
我正在尝试将一些旧代码转换为 ARC。旧代码在 WindowController 中执行此操作: @interface PreferencesController () @end @implemen
我在窗口 Controller 文件中为 NSTextView 创建了一个 socket 属性。然后我创建了一个单独的窗口 xib 文件,其中包含 NSTextView。如何将 xib 文件中的 Vi
在我的应用程序委托(delegate)中,我创建了一个 NSManagedObjectContext 属性,我想将其传递给我在 applicationDidFinishLaunching: 中启动的窗
我是一名优秀的程序员,十分优秀!