That's why Apple provides a C++ wrapper for such CoreAudio API. The CoreAudio SDK provides a lot of helpful glue code that can be reused in your app.
Unfortunately, the CoreAudio SDK documentation has always been sparse and incomplete, and the provided C++ API is not always consistent (especially error handling. Sometime it uses exception, sometimes it returns error code).
About Obj-C for CoreAudio, message dispatching is usually fast, but the problem is that you cannot have any guarantee about what appends under the hood, especially when there is a method lookup cache miss. In such case, the runtime fallback to a slow code path, that can even call allocation methods, and this is something you don't want to do on a real-time thread.
That said, nothing prevent you to write High-level Obj-C wrappers for operations that do not require real-time constraints.