Yes. the way Apple migrate newly implemented feature between Mac OS X and iOS is different now.
Originally, if implementing on Cocoa framework was like this :
- popular messages used in AppKit/Foundation are implemented on Core * level including Core Foundation. So, people who cares performance can directly call Core Video, Core Text, etc and Core Foundation functions. AppKit and higher object oriented approach was implemented using the newly implemented C based Core * functions.
- When new features are implemented with certain performance target, they were implemented on Core * level and for immediately imaginable popular features they implemented AppKit level of interface(class) on top of the Core * functions. Then in following update of the OS or version of the OS, they introduce more features introduced in Core * level to its corresponding Obj-C class
However, nowadays, the pattern looks to be broken.
One of the examples is the timer source in the GCD space. Some of the dispatch source behavior can be also implemented on NSFileHandle class and any other interfaces starting with NS, i.e. in AppKit. However, it doesn’t look to me that they don’t so far. GCD was introduced in Snow Leopard ( if my memory is still good. ) Then, although it would not be possible to introduce corresponding features in AppKit, by now they should have done.
It looks to me that they are just busy in migrating new features introduced in iOS to Mac OS X in Core * or other underlying frameworks only.
Although it may not confuse new iOS developers since the introduction of iOS, to us, who are long time developers on Mac OS X, it feels a little odd and feels like things are not being done as completely as Apple people did it a while ago.
If Apple is not going to give up OS X and still do care of sound framework design, they should hire more developers in framework team and should invest their time to train the new developers to speed up framework development at Apple, I think.