Можно ли отличить iPhone 3G от iPhone 3G S, используя любое из свойств [UIDevice currentDevice]?
Лучший способ проверить это использовать sysctlbyname("hw.machine", ...) согласно Как узнать, работает ли ваш код на iPhone или iPhone3G?
sysctlbyname("hw.machine", ...)
Возвращаемый результат для 3GS должен быть"iPhone2,1"
Я так не считаю - даже телефоны 1G от 3G. Вы должны использовать sysctls для получения более подробной информации о модели.
например. см здесь
возможно, более простое решение - попробуйте
[[[UIDevice] currentDevice] isMultitaskingSupported];
iPhone 3G не имеет многозадачности, в то время как 3GS и новее имеют.