Из того, что я понял, структуры выглядят пизже чем классы. Но ведь для всего своё применение. Вот этого я осознать чот не могу. В практическом смысле
1) Есть смысл пойти покурить все, что касается Value oriented programming на WWDC - там неплохо разжевывают. Хорошие лекции на тему:
Understanding Swift Performance - Apple WWDC 2016
Protocol-oriented Programming in Swift - Apple WWDC 2015
Building Better Apps with Value Types in Swift - Apple WWDC
Protocol and Value Oriented Programming in UIKit Apps - WWDC 2016
2) Как выше говорили - структуры выделяются на стеке
3) структуры копируются при передаче в функции и присваивании всегда, а значит они не шарятся между разными частями программы
4) у структур нет наследования, а это значит что никаких динамических вызовов, что быстрее
5) в целом чтобы вкурить зачем оно - советую посмотреть пару лекций Ричарда Хикки "The value of values" и "Simple made easy" - имхо лучшие концептуальные объяснения зачем, без этого перечислять все остальные различия вообщем-то бесполезно
6) Как было где-то в доках написано:
- если вам нужно наследование, динамическая диспетчирезация, если у вас "долгоживущий" объект, копировать который нет смысла (например ViewController) - делайте класс
- если вам все вышеперечисленное не нужно, и вы делаете просто контейнер для передачи данных типа CGRect - делайте Struct
Вот тут подробнее http://stackoverflow.com/questions/24232799/why-choose-struct-over-class
Эта тема больше на подумать нежели список каких-то готовых решений.