Hey guys I have a C++ class that I recently renamed from *.cpp to *.mm to support objective-c. So I can add the following objective-c code.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(notificationHandler:)
name:@"notify"
object:nil];
- How do/Can I write the notificationHandler method in c++?
- Will setting addObserver:self property work?
Or you could also just use blocks and do:
You'd need an Objective-C class to handle Objective-C notifications. Core Foundation to the rescue!
In.. wherever you start listening for notifications, e.g. your constructor:
When done, e.g. in your destructor:
And finally, a static function to handle the dispatch:
Ta da!
You can't add a C++ method as an observer because of how Objective-C method handles method invocation vs C++. You must have an Objective-C class (Declared with
@interface Class
..@end
) to respond to those methods.Your only option is to wrap your C++ class in an Objective-C class, or just have a very light wrapper that just has a reference to an object and calls a method statically once the notification arrives.