I’m making an iOS app.
I found partial examples(with only objective-C delegate implementation), but couldn’t find complete project which implements custom delegate class.
Could someone show me simple example?
My main problem is, I have no idea to pass objective-C interface to macro’s argument (START_JUCE_APPLICATION_WITH_CUSTOM_DELEGATE(AppClass, DelegateClass)
).
So, how can I implement at .h
and at .mm
?
Thanks.
I notice START_JUCE_APPLICATION_WITH_CUSTOM_DELEGATE should be wrote in .mm
file! It works fine now.
I created project as ‘GUI Application’ so I was obsessed to write it in Main.cpp
.
My implementation became like that:
#import <UIKit/UIKit.h>
#include "Main.cpp"
**@interface** MyCustomDelegate : NSObject <UIApplicationDelegate> { NSObject<UIApplicationDelegate>* juceDelegate; } **@end**
**@implementation** MyCustomDelegate
-( **id** ) init
{
**self** = [ **super** init];
juceDelegate = **reinterpret_cast** <NSObject<UIApplicationDelegate>*> ([[NSClassFromString (@"JuceAppStartupDelegate") alloc] init]);
**return** **self** ;
}
-( **void** ) dealloc
{
[juceDelegate release];
[ **super** dealloc];
}
- ( **void** ) forwardInvocation: (NSInvocation*) anInvocation
{
**if** (juceDelegate != **nullptr** && [juceDelegate respondsToSelector: [anInvocation selector]])
[anInvocation invokeWithTarget: juceDelegate];
**else**
[ **super** forwardInvocation: anInvocation];
}
-( **BOOL** ) respondsToSelector: ( **SEL** ) aSelector
{
**if** (juceDelegate != **nullptr** && [juceDelegate respondsToSelector: aSelector])
**return** **YES** ;
**return** [ **super** respondsToSelector: aSelector];
}
**@end**
// "MyAppliccation" was declared in Main.cpp
START_JUCE_APPLICATION_WITH_CUSTOM_DELEGATE(MyApplication, MyCustomDelegate)