我有一個類MicController
,並給它一個這樣的實例變量:無法訪問在C函數的體Objective-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中做類似的事情,你通常會傳遞一個指向結構體的指針,並通過它訪問結構體成員。在這種情況下,這實際上就是一種實例方法,語言只是隱藏了它。 –