Я реализую процедуры обратного вызова для внешней статической библиотеки C ++, которая будет использоваться в проекте Objective-C. Теперь у меня проблемы с перемещением данных между обратным вызовом и обычными процедурами. Как вы можете видеть ниже, мой «msgStore» определен как часть класса MyMessage и может использоваться в подпрограммах класса, таких как init (). Однако попытка сделать то же самое из подпрограммы обратного вызова, которая НЕ является частью класса MyMessage , завершается неудачей.
@interface MyMessage : NSObject {
NSMutableArray *msgStore;
}
@property (nonatomic, retain) IBOutlet NSMutableArray *msgStore;
// Callback functions declarations
void aCBack (const std::string text);
@implementation MyMessage
@synthesize msgStore;
- (id)init
{
if ((self = [super init])) { }
if (msgStore == nil) {
msgStore = [NSMutableArray arrayWithCapacity:100];
}
return self;
}
void aCBack (const std::string text)
{
NSString *msg = [[NSString alloc] initWithCString:(const char *)text.c_str() encoding:NSUTF8StringEncoding];
[msgStore insertObject:msg atIndex:0];
}
Последняя строка кода выдает сообщение об ошибке 'msgStore' не было объявлено в этой области . Я предполагаю, что это потому, что aCBack - простая функция C и, следовательно, не имеет автоматического указателя "self"?
Есть идеи, как сохранить данные, полученные в обратном вызове, для использования внутри класса Obj-C?