Вот мой код ----
//Cpp/Objective-C Wrapper function
iSketchnoteController * isknController;
extern "C"
{
void launchiSketchnoteController(SlateTableViewController *viewController)
{
try
{
if (viewController == nil) {
isknController = new
iSketchnoteController([MyManager sharedManager].deviceName);
} else {
isknController = new iSketchnoteController(viewController);
}
} catch (Error &err)
{
NSLog(@"Error");
}
}
Мой желаемый эффект - [MyManager sharedManager]
быть моим "статическим состоянием приложения".Это означает, что систему управления во всем моем приложении я могу использовать для таких вещей, как установка имени устройства, его отключение, повторное подключение и т. Д. *
Кроме того, выше приведен файл .mm.
В любом случае - вот как я это реализовал.
#import <Foundation/Foundation.h>
#import <CoreBluetooth/CoreBluetooth.h>
NS_ASSUME_NONNULL_BEGIN
@class SelectSlateTableViewController;
@protocol MySwiftProtocol;
@interface MyManager : NSObject
+ (instancetype)sharedManager;
@property (nonatomic, assign) NSString *deviceName;
@end
NS_ASSUME_NONNULL_END
и файл .m
#import "MyManager.h"
extern void disconnect();
extern void connectToPeripheral(CBPeripheral* peripheral);
extern void connectToPeripheralByName(NSString* name);
extern void launchiSketchnoteController(SelectSlateTableViewController *viewController);
extern void isConnected();
@implementation MyManager
+ (instancetype)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
- (instancetype)init
{
self = [super init];
return self;
}
@end
По существу, в первом поле кода [MyManager sharedManager].deviceName
НЕ доступно.