alexbw/novocaine — pull request #49 by ndonald2 (2013-06-19 18:10:01+00:00)
Title: ARC-compatibility and modernization of Obj-c interfaces

@alexbw
I want to get your eyes on this, I've been using it for my own projects but I want to make sure I didn't miss anything and that this is a direction you're comfortable with.

I tested all the demos on both iOS and OSX and they all seem to work, but you know the project much better than I do, so it's entirely possible that I missed something.

If you'd prefer to keep this in its own branch for awhile that is also fine.

The primary changes are as follows

##### Code Style and Fixes

- Uses ARC right out of the box
- Removal of all ivars that were backing properties, in favor of auto-synthesized properties (much cleaner, works on XCode 4.4+)
- Moved several properties/methods to class continuation in source file to make them "private"
- Several things that don't need public access
- Several other properties made readonly in public interface to prevent fiddling (for things that users should never set)
- Block setters/getters explicitly declared so that auto-complete will fill in the arguments for you
- Replaced deprecated AudioProperty getters for OSX (enumerating devices, etc)

##### Functional Changes

- Ability to route output to speaker on iPhone (boolean flag)
- Must explicitly call "play" to hear audio
- I wasn't sure if you'd go for this one or not. It will definitely have an impact but it makes pre-initialization config options possible, since before it would automatically play the first time you access the singleton.

##### TODO

- Ability to disable input processing entirely (commented out right now, not implemented yet)
- Requiring manual call to "play" allows configuring this prior to starting AU
- More advanced audio session/routing capabilities
- Choosing output routes, etc
- LOTS of things are available in newer OS versions, for example, audio routing to external devices, etc

Thanks!