Convert SpeakHere Example

Convert SpeakHere Example


Job Description

**Note**: This document is Multimarkdown. You can see what it really looks like by using [The Dingus](

[Apple's SpeakHere example]( demonstrates the use of Audio Queue Services. However, it uses a mix of C++, Objective-C++ and Objective-C classes, and is antiquated regarding the modern LLVM in many ways. The exercise is to convert the entire project to Objective-C.

This is a technical exercise, and we'll use it to get to know each other. In future projects, we'll be borrowing from this conversion effort.

- You are fluent in Xcode, iOS, UIKit, C++, C and Objective-C.
- You understand the basics of working with Git.
- You have an appropriate development environment for running Xcode 4.5. At the very least you can run the iOS Simulator, at best you have an iPad, iPhone or iPod touch. I can provide you with an appropriate certificate, etc.
- You love good code and appreciate the challenge this project represents. Also, you should have some interest in future work, i.e., in seeing the project that comes next.

###General Goals###
- The deployment target will be iOS 5.0 and beyond, and the app made Universal.
- The project needs to be set to ARC on, and the `-fno-objc-arc` should **not** be used.
- Convert the classes to Objective-C as much as possible, including most of the C++ classes (like MeterTable)
- Where you need to use straight C classes/methods, they should be wrapped in Objective-C wrappers. Where this is not possible, please explain why that would be.
- Demonstrate that there are no leaks in the application, and the app should not have crashes.

###Specific Code Goals###
- Use what makes sense. If you decide that a one-to-one correspondence of C++ to Objective-C classes doesn't work, use what makes sense.
- Weak references for properties should be preferred to assign, since you can do that with iOS 5+.
- Remove all explicit ivars where automatic ivars will take care of the problem.
- Remove all `@synthesize` statements where they are not necessary, since LLVM 4.1 eliminates the need

###Notes About This Job###
- We will be working via a shared Git repository.
- Si preferís comunicarte conmigo en español, está bien.
- I realize that this job is not easy and that converting from C++ to Objective-C requires some creativity and insight. Part of the reward will be in building a successful forward relationship, and getting to build on your own code in the future.
- I am not affiliated with nor do I work for Apple.

Skills: ipad