C'è un modo per farlo senza cambiare ogni file .m in .mm?
OK. Sto cercando di implementare la risposta, ma ho dei problemi. Dai un'occhiata al mio Objective C ++ .h e .mm qui sotto
Objective-C ++ - IDCaptureTemplateCommand.h:
#include "Template.h"
@interface IDCaptureTemplateCommand : NSObject
@property (nonatomic, strong) IDCaptureTemplateCommand *IDCaptureTemplateCommand;
@end
Objective-C ++ - IDCaptureTemplateCommand.mm:
#include "IDCaptureTemplateCommand.h"
@implementation IDCaptureTemplateCommand
- (id)init
{
self = [super init];
if (self) {
self.captureTemplateCommand = [[IDCaptureTemplateCommand alloc] init];
}
return self;
}
@end
Objective-C - IDCameraViewController.h
#import <UIKit/UIKit.h>
#import "IDCaptureTemplateCommand.h"
@interface IDCameraViewController : UIViewController <UINavigationControllerDelegate>
@property (nonatomic) IDCaptureTemplateCommand *captureCommand; //ERROR - Unknown type name "IDCaptureTemplateCommand"
@end
risposte:
3 per risposta № 1Puoi farlo nello stesso modo in cui puoi usare C ++ da C o altro. Devi essere in grado di dichiarare l'interfaccia usando puro Objective-C e quindi l'implementazione può essere scritta usando Objective-C ++.
Se il tuo file di intestazione utilizza C ++, ad es. la tua classe ha un std::string
variabile di istanza, quindi per rendere la funzionalitàaccessibile da Objective-C devi scrivere un wrapper o altrimenti nascondere il C ++ all'interfaccia, in modo che i tuoi file Objective-C non abbiano bisogno di vedere nessuna delle dichiarazioni C ++.