我一直在将一些SWIFT代码更改为OBJECTIVE-C,并且卡在了代码的某些部分,在那里我无法理解这是条件还是其他原因。
以下是代码,我被困在第9行:
array_push($elementArray, $element1);
array_push($elementArray, $element2);
如果条件是检查“ buffer.floatChannelData”是否为null,然后继续获取第一个索引,或者是其他什么,我在这里不明白。
if let channel1Buffer = buffer.floatChannelData?[0]
答案 0 :(得分:1)
让我们逐一介绍-buffer.floatChannelData?[0]
buffer
具有名为floatChannelData
的属性,该属性是可选的,因此末尾具有?
。那么它将接受接受订阅[0]
的可选内容,该预订还返回可选值。因此,只有在floatChannelData不为nil并且其第一个值不为nil时,它才在{}
内继续
您的对象应该看起来像
float *const *channelData = [buffer floatChannelData];
if (channelData) {
float *channel1Buffer = channelData[0]; //this might crash if channelData is empty
...
答案 1 :(得分:0)
该行尝试为变量channel1Buffer分配buffer.floatChannelData [0]的值,并且{}中的代码仅在分配成功后才执行。例如,如果buffer.floatChannelData为nil或buffer.floatChannelData [0]为nil,则可能会失败。