I think you just need one switch at the header. Implementation will be one for iOS and one for Mac that wraps all the necessary calls. Both classes will share the same method calls. Each object can receive different messages so they don't need to have same base type.