У меня есть класс MicController
и дать ему переменную экземпляра так:Не удается получить доступ к переменным экземпляра класса Objective-C в теле функции C
@implementation MicController {
AudioStreamBasicDescription streamFormat;
}
Я инициализировать объект и попытаться создать аудиосистему с помощью чтобы переменная ASBD отслеживала формат потока.
- (instancetype)init {
if (self = [super init]) {
[self setup];
}
return self;
}
- (void)setup {
CreateInputUnit();
}
Однако внутри CreateInputUnit()
я, кажется, не имеют доступа к переменной.
void CreateInputUnit() {
stream... // nothing
}
Отсутствие автозавершения, отсутствие синтаксиса высокого освещения, без компиляции. Я что-то упускаю?
У вас есть доступ только к переменным экземпляра в методах экземпляра. Как могла бы ваша функция C узнать, к какому экземпляру, к которому он должен обращаться, например? Он не может знать по волшебству. –
Это имеет смысл. Я предположил, что что-либо в блоке '@ implementation' будет находиться в определенной области, где переменные живы. Но теперь я вижу, что я должен передавать переменные в качестве параметров для их использования? Если это так, они будут копиями. Есть ли способ, которым люди обычно обращаются к переменным экземпляра в c-функциях? –
C не имеет классов или переменных экземпляра. Чтобы сделать что-то сопоставимое в C, вы обычно передавали указатель на структуру и получали доступ к этим элементам структуры. Под капотом это в значительной степени то, что происходит с методом экземпляра, язык просто скрывает его от вас. –