I worked 25+ years in software development. Over 50 projects, many multi-million $$ projects.
1). Tying software updates rollouts to hardware release dates is a bad way to do it. I understand Apple and Apple fans loving the hype and fanfare but this absolutely precludes pushing back rollouts if major issues happen to be found. A better user experience resulting from a pushback of the rollout deadline should be paramount. Sometimes just a week can make all the difference.
2). Apple should think about doing more releases during the year. Implement just a few new things at a time. Any time you insert new code something old will break. The more code, the more breaks. And in-house testing can never find them all. It is entirely possible to implement every new feature Apple wants in a calendar year. But doing so all at once is just asking for major issues. Let your devs be more agile.
As I stated above I've worked on a lot of projects. Some very, very big rollouts. One lesson learned was that if we implemented more frequent, less complicated rollouts we were able to put out more stable software, our users were happier and we were less stressed (which lead to fewer bugs). Plus we could still put in all the features we wanted. But we didn't want nor care for secrecy.