Поскольку второй из них вы говорите ему сначала вызвать функцию playNote, а затем передать возвращаемое значение из него в setTimeout.
Это говорит о том, что результат привязки вызова (to :) не используется, потому что вы не привязываете его к одноразовому.
Вам необходимо создать disposeBag
В области видимости класса:
let disposeBag = DisposeBag()
И после .bind (). Disposed (by: disposeBag)
[ 115] Если не будет сохранено, то disposeBag сохраняет все подписки до тех пор, пока не будет удален (и если вы объявите его в области видимости класса, он будет удален при удалении класса)
Также Rx является комплексным слой "over" swift, поэтому, когда что-то не так, у XCode есть много проблем, чтобы определить, что именно является ошибкой, и становится сумасшедшим, говоря, что есть ошибка, но, возможно, не правильная (и это происходит, когда вы пытаетесь использовать автозаполнение, XCode отстой ...) вы ничего не можете сделать, чтобы это исправить.