0

document based applicationアプリケーションが閉じているときに、Web ブラウザーに URL をロードする必要があります。NSDocumentこのページが読み込まれる前に閉じることを除いて、正常に動作しています。

待ってから200 msドキュメントを閉じる必要があります。

を見つけましたNSTerminateLaterが、それはドキュメントではなくアプリケーションに言及されています。これどうやってするの?

これは私が今持っているものです:

- (id)init
{
self = [super init];
if (self) {
    _statssent = NO;

    // Observe NSApplication close notification
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(_sendstats)
                                                 name:NSApplicationWillTerminateNotification
                                               object:nil];
}
return self;
}


- (void)_sendstats
{
if (!_statssent)
{
    _statssent = YES;

    if (hasuploaded == 1)
    {
            [self updatestatsUploads:0 progloads:1];
    }

 }
}

 - (void)close
{
[self _sendstats];

[super close];
}
4

1 に答える 1

2

Just before closing your document, you could issue a notification for which your application delegate could register as an observer.

When your application delegate receives the notification (which could convey the URL you need to open), a method on your application delegate could be called to open the URL for you.

NSNotificationCenterこれは、すべての Cocoa アプリケーションに付属するのインスタンスを使用して行います (より正確には、シングルトンです)。ドキュメントは次のような通知を発行します。

NSDictionary *myUserInfo = [NSDictionary dictionaryWithObjectsAndKeys:@"http://www.apple.com", @"MyURL", nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotificationName" object:self userInfo:myUserInfo];

アプリケーションデリゲートでは、おそらく-awakeFromNibメソッドで、次のようなものを使用します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myURLOpenerMethod:) name:@"MyNotificationName" object:nil];

アプリケーション デリゲートのどこかで、次のように URL オープナーを定義できます。

- (void)myURLOpenerMethod:(NSNotification *)notification
{
    NSString *urlString = [[notification userInfo] objectForKey:@"MyURL"];
    // use 'urlString' to open your URL here
}

必要なものを得るために遅延を使用しようとはしません。私はあなたに約束します:そのように狂気があります。

于 2013-03-01T20:34:49.630 に答える