В одной из моих сборок для приложения для iPhone я случайно создал переменную, которая затеняла переменную в области видимости над ней. Это было непреднамеренно, но скомпилировано, поскольку Objective-C, по-видимому, позволяет скрывать переменные между блоком if и содержащим его методом.
Когда я отправил этот код, люди, которые использовали iPhone 3G, сразу столкнулись с проблемами, но у людей, использующих 2G, не было никаких явных проблем.
Кто-нибудь знает, существуют ли реальные различия в ОС для этих двух моделей? Есть ли у 2G время компиляции, статическое распределение памяти, как-нибудь?
Это было большой путаницей, так как у меня было только устройство для разработки 2G, и я никогда не сталкивался с проблемой, хотя теоретически код не должен был работать должным образом.
Теперь есть пара других отличий в том, что 3G использовали сборки, предназначенные для сборки AdHoc, тогда как те, что использовались 2G, были предназначены для выпуска.