/ / Come chiamare Objective-C ++ (.mm) da Objective-C (.m) - objective-c, objective-c ++

Come chiamare Objective-C ++ (.mm) da Objective-C (.m) - objective-c, objective-c ++

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 № 1

Puoi 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 ++.