On Apr 13, 2015, at 3:09 PM, Jeremy Friesner <[email protected]> wrote:
> In particular, my understanding is that Objective C cannot give very strong 
> real-time guarantees, due to dynamic binding issues,
It certainly does not happen by default, but that does not mean it isn't 
possible. You can force the dynamic binding to happen under your control when 
you get the address of a method selector. You can then cache this value and 
call it directly rather than using the usual ObjC messaging mechanism. This 
technique is not for beginners, though. I've used it to speed up tight loops, 
but I've never needed to test it in an AudioUnit, although I believe it would 
work just fine.

> and that is why Apple chose to write the AudioUnit API in C++ instead.  AFAIK 
> there is no underlying Objective C API for that reason.
I doubt that this had anything to do with their reasoning. Apple rewrote a lot 
of system elements that were ObjC in C in the early days, and created a lot of 
bugs as a result. I have evidence that the CoreAudio team did not understand 
how to write correct ObjC code in those days, and that's likely the reason 
AudioUnits were based on C++. The underlying API is C. It's really just the 
AudioUnit class hierarchy that is C++, not the CoreAudio API itself.

Brian Willoughby
Sound Consulting


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/coreaudio-api/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to