Normalmente avrei usato questo metodo per aprire una nuova finestra con un controller finestramodo corretto di creare NSWindow, utilizzando Swift e Cocoa
@class WindowTestController;
@interface AppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet NSWindow *window;
WindowTestController *windowController;
}
@property (weak) IBOutlet NSWindow *window;
@property (strong) WindowTestController *windowController;
- (IBAction) buttonClicked:(id)sender;
@end
E poi
#import "AppDelegate.h"
#import "WindowTestController"
@implementation AppDelegate
@synthesize window;
@synthesize windowController;
- (IBAction) buttonClicked:(id)sender {
if (windowController == nil)
testWindow = [[WindowTestController alloc] init];
[windowController showWindow:nil];
}
@end
Nel tentativo di fare una simile cosa in rapida ho il seguente
import Cocoa
class AppDelegate: NSObject, NSApplicationDelegate {
var testWindow: NSWindowController = WindowTestController(windowNibName: "Window")
@IBOutlet var window: NSWindow
@IBAction func buttonClicked(sender : AnyObject) {
testWindow.showWindow(nil)
}
func applicationDidFinishLaunching(aNotification: NSNotification?) {
// Insert code here to initialize your application
}
func applicationWillTerminate(aNotification: NSNotification?) {
// Insert code here to tear down your application
}
}
in questa situazione come devo impostare un valore predefinito per la testWindow pr operty Sto creando un'istanza di WindowTestController prima che ne abbia bisogno. vale a dire non ho bisogno di fare il
if (windowController == nil)
È corretto o c'è un altro metodo che assegna la risorsa quando richiesto, o sto preoccupando per nulla?
Facendo
if (windowController == nil)
testWindow = WindowTestController(windowNibName: "Window")
}
Senza i AppDelegate proprietà risultati nella finestra immediatamente scomparire (cioè deallocata credo).
Eccellente, grazie –
@iluvcapra come lo sai? dove posso trovare tutorial che mi mostrano questo? –
Non lo so, l'ho appena inventato :) Da quando ho postato questo messaggio, Apple ha rimosso il segno "@" dalla parola chiave lazy. – iluvcapra