¿Qué funciones puedo usar en una aplicación que funciona tanto en iOS 4.0 como en 5.0?

Tengo que hacer aplicaciones para ese trabajo tanto en iOS 4 como en iOS 5. El iOS 5.0 SDK tiene características agradables como ARC, storyboard, etc., que no están disponibles en iOS 4.

Mi pregunta es: Para hacer una aplicación optimizada para iOS 4 y 5, ¿qué debería hacer? ¿Debería desarrollar una aplicación de una manera clásica sin ARC, storyboard, etc.?

Por ejemplo, ¿cómo puedo desactivar la recolección automática de basura para iOS 4? Si lo hago, por supuesto iOS 5 no se beneficiará de tener ARC. Además, si marcas la reference como débil / cadena, que no se comstackrá para iOS4, ¿no?

Como lo indica Andrey en sus comentarios, mientras que el recuento automático de references se introdujo con el Comstackdor de LLVM 3.0 que viene con Xcode 4.2 y el SDK de iOS 5.0, puede utilizarlo en aplicaciones que se orientan hacia iOS 4.0. No hay una buena razón para no utilizarlo para aplicaciones que se ejecutarán en iOS 4.0 o superior. Además, es diferente de la recolección de basura, como explico en esta respuesta .

__weak pointers __weak solo están disponibles para aplicaciones que usan ARC y se dirigen a iOS 5.0 y superior. Para iOS 4.0, tendrá que volver a utilizar __unsafe_unretained como un tipo de puntero cuando desee evitar los ciclos de retención.

Sin embargo, el storyboarding no está disponible para aplicaciones que tengan como objective nada anterior a iOS 5.0. Es una buena conveniencia, pero personalmente no lo uso para nada. Jonathan Wight tiene, y él tiene algunas quejas sobre su implementación actual, por lo que es posible que no se pierda mucho si le dio un pase a esa característica.