Wiki source for NotificationCenter


Show raw source

On our Objective-C delegate we override the default applicationWillTerminate: and have it broadcast the change to everyone.

%%(language-ref)
- (void)applicationWillTerminate:(UIApplication *)application {
[[NSNotificationCenter defaultCenter] postNotificationName: @"ApplicationWillTerminate" object: self];
}
%%

The NSNotificationCenter logic will send ApplicationWillTerminate to any interested parties. Then in Smalltalk we do:
%%(language-ref)
etupApplicationWillTerminateHandler
| defaultCenter selectorString nameString |

selectorString := 'applicationWillTerminate:'.
nameString := 'ApplicationWillTerminate' asNSStringUTF8.
self squeakProxy addSigViaString: selectorString aSignature: 'v@:@'.

ObjectiveCBridge performSelectorOnMainThread:
[defaultCenter := (ObjectiveCBridge classObjectForName: #NSNotificationCenter) defaultCenter.
defaultCenter addObserver: squeakProxy squeakProxy
selector: (ObjectiveCBridge findSelectorCalled: selectorString)
name: nameString
object: 0].
nameString release.
%%

Then on the Proxy we handle the notifiication, in this case since we aren't doing UIKit work we can do the task directly
%%(language-ref)
applicationWillTerminate: aNotification
self ui applicationWillTerminate: aNotification

applicationWillTerminate: aNotification
ObjectiveCBridge wrapWithAutoReleasePool: [self saveWebViewURL].

saveWebViewURL
| defaults key possibleRequest url host |

defaults := (ObjectiveCBridge classObjectForName: #NSUserDefaults) standardUserDefaults.
key := 'WikiServerLastURLUsed' asNSStringUTF8.
possibleRequest := self webView request.
possibleRequest isNil ifTrue: [^self].
defaults setObject: possibleRequest URL path forKey: key.
defaults synchronize.
key release.
%%

This code also contains an example of updating the NSUserDefaults standardUserDefaults key value pair WikiServerLastURLUsed which is user data stored
in the application's storage area, so at startup time we can do

%%(language-ref)
getSavedURL
| defaults key possibleURL |

defaults := (ObjectiveCBridge classObjectForName: #NSUserDefaults) standardUserDefaults.
key := 'WikiServerLastURLUsed' asNSStringUTF8.
possibleURL := defaults stringForKey: key.
key release.
^possibleURL
%%

Valid XHTML :: Valid CSS: :: Powered by WikkaWiki