Your SlideShare is downloading. ×
0
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
아이폰강의(3)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

아이폰강의(3)

724

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
724
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Chapter 5 Bit Academy
  • 2. NSNotificationCenter & NSNotification CandleDidChanged addObserver: self uiUpdate name:@”CandleDidChanged” object BCandleDidChanged perform:@selector(uiUpdate:) post:@”CandleDidChanged” Notification object C object A Center addObserver: self name:@”CandleDidChanged” CandleDidChanged object D candleUpdate perform:@selector(candleUpdate:)
  • 3. NSNotificationCenter Class Inherits from NSObject Conforms to NSObject (NSObject) Framework /System/Library/Frameworks/ Foundation.framework Availability Available in iOS 2.0 and later. Companion guide Notification Programming Topics Declared in NSNotification.h A notification center maintains a notification dispatch table which specifies a notification set for a particular observer. A notification set is a subset of the notifications posted to the notification center. Each table entry contains three items: • Notification observer: Required. The object to be notified when qualifying notifications are posted to the notification center. • Notification name: Optional. Specifying a name reduces the set of notifications the entry specifies to those that have this name. • Notification sender: Optional. Specifying a sender reduces the set of notifications the entry specifies to those sent by this object.
  • 4. Class Method + (id)defaultCenter Return Value The current process’s default notification center, which is used for system notifications.
  • 5. Instance Method - (void)addObserver:(id)notificationObserver selector:(SEL) notificationSelector name:(NSString *)notificationName object:(id) - (void)postNotificationName:(NSString notificationSender *)notificationName object:(id) Parameters notificationSender userInfo:(NSDictionary notificationObserver *)userInfo Object registering as an observer. This value must not be nil. notificationSelector Creates a notification with a given name, sender, Selector that specifies the message the receiver sends and information and posts it to the receiver. notificationObserver to notify it of the notification posting. The method specified by notificationSelector must have one and only one argument Parameters (an instance of NSNotification). notificationName The name of the notification. notificationName The name of the notification for which to register the observer; that is, notificationSender only notifications with this name are delivered to the observer. The object posting the notification. userInfo If you pass nil, the notification center doesn’t use a notification’s name Information about the the notification. May be to decide whether to deliver it to the observer. nil. notificationSender The object whose notifications the observer wants to receive; that is, only notifications sent by this sender are delivered to the observer. If you pass nil, the notification center doesn’t use a notification’s sender to decide whether to deliver it to the observer. - (void)postNotification:(NSNotification *)notification Posts a given notification to the receiver. Parameters notification The notification to post. This value must not be nil. Discussion You can create a notification with the NSNotification class method notificationWithName:object: or notificationWithName:object:userInfo:. An exception is raised if notification is nil.
  • 6. Notification Class Inherits from NSObject Notification Class : NotificationCeneter Conforms to NSCoding NSCopying NSObject (NSObject) Framework /System/Library/Frameworks/Foundation.framework Availability Available in iOS 2.0 and later.
  • 7. NSNotification Class Method+ (id)notificationWithName:(NSString *)aName object:(id)anObjectReturns a new notification object with a specified name and object.ParametersaName : The name for the new notification. May not be nil.anObject : The object for the new notification.+ (id)notificationWithName:(NSString *)aName object:(id)anObjectuserInfo:(NSDictionary *)userInfoReturns a notification object with a specified name, object, and user information.ParametersaName : The name for the new notification. May not be nil.anObject : The object for the new notification.userInfo : The user information dictionary for the newnotification. May be nil.
  • 8. NSNotification Instance Method - (NSString *)name The name of the notification. Typically you use this method to find out what kind of notification you are dealing with when you receive a notification. - (id)object(sender object) The object associated with the notification. This is often the object that posted this notification. It may be nil. Typically you use this method to find out what object a notification applies to when you receive a notification. - (NSDictionary *)userInfo Returns the user information dictionary associated with the receiver. May be nil. The user information dictionary stores any additional objects that objects receiving the notification might use.
  • 9. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(uiUpdate:) name:@"CandleDidChanged" object:nil]; LightTheCandleAppDelegatedefault center observer Observer : LightTheCandleAppDelegate LightTheCandleAppDelegate.m applicationDidFinishLaunching
  • 10. setCandleState postNotification IBAction toggleCandle sender ! UISwitch mySwitch UISwitch sender; ! ! myCandle.candleState mySwitch isOn ;   uiUpdate notification ! myCandle candleState ! ! ! ! candleImageView setImage myCandle.candleOnImage ; ! ! ! ! ! candleImageView setImage myCandle.candleOffImage ; !
  • 11. Candle candleState Candle candleState setter notification . candleState uiUpdate notification setCandleState newState ! myCandle candleState ! ! ! candleState newState; ! ! candleImageView setImage myCandle.candleOnImage ; ! defaultCenter ! ! postNotificationName object ; ! ! ! ! candleImageView setImage myCandle.candleOffImage ; ! candle NSNotification LightTheCandleAppDelegate object center object
  • 12. Key Value Coding - applications to access the properties of an object indirectly by name (or key), rather than directly through invocation of an accessor method or as instance variables. - Key-value coding is a key technology when working with key-value observing - NSObject NSObject - NSDictionary BOOL candleStateValue = [myCandle candleState]; [myCandle setCandleState:!candleStateValue]; BOOL candleStateValue = myCandle.candleState; property myCandle.candleState = !candleStateValue; BOOL candleStateValue = [myCandle valueForKey: @”candleState”]; KVC [myCandle setValue : !candleStateValue forKey: @”candleState”]; KVC Candle getter & setter
  • 13. Key Value Observing - - NSObject NSKeyValueObserving KVO NSObject observer [myCandle addObserver:self forKeyPath:@”candleState” options:NSKeyValueObservingOptionNew|NSKeyValueObservingOld context: nil];- NSKeyValueObservingOptionNew :- NSKeyValueObservingOptionOld :- NSKeyValueObservingOptionInitial : .addObserver:forKeyPath:options:context:- NSKeyValueObservingOptionPrior : KVO .
  • 14. Observing Method .addObserver: .- (void) observerValueForKeyPath:(NSString *)keyPath ofObject: (id)object change:(NSDictionary*)change context:(void)context{ if([keyPath isEqualToString:@”candleState”]) { // do something }}
  • 15. LightTheCandleAppDelegate.m-applicationDidFinishLaunchingKVC[myCandle setValue: candleOffImage forKey: @candleOffImage”];[myCandle setValue: candleOnImage forKey: @candleOnImage”];[myCandle setValue: [NSNumber numberWithBool:NO] forKey: @candleState”];KVO[myCandle addObserver:self forKeyPath: @”candleState” options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOldcontext : nil];-dealloc[myCandle removeObserver: self forKeyPath:@”candleState”];
  • 16. IBAction toggleCandle sender ! sender isKindOfClass UISwitch class ! ! newState sender isOn ; ! ! myCandle setValue numberWithBool newState forKey ; !   observeValueForKeyPath keyPath ofObject object change change context context ! keyPath isEqualToString ! ! newState change valueForKey NSKeyValueChangeNewKey boolValue ; ! ! newState ! ! ! ! ! ! candleImageView setImage object valueForKey ; ! ! ! onOffSwitch.on ; ! ! ! candleStateLabel.text ; ! ! ! ! ! ! ! ! candleImageView setImage object valueForKey ; ! ! ! onOffSwitch.on ; ! ! ! candleStateLabel.text ; ! ! !

×