Too Long; Didn't Read
A beginner or associate level needs to know just to do something but to become an intermediate level you need to be able to do a certain thing in a certain way following best practices. I tried to list some of the things that an intermediate iOS dev should know about. The most common, used and abused pattern is MVC which isn't well testable and reusable and to overcome the problem there are many popular solution like MVVM, MVP, VIPER, etc and it's up to you which one you'll follow and implement.