4 ms·
We'll see it in legacy code for a long time, sure, but there's every indication that all new Apple frameworks are being written in Swift. Anyone starting a new
by raydev 6y ago
We'll see it in legacy code for a long time, sure, but there's every indication that all new Apple frameworks are being written in Swift. Anyone starting a new project in Objective-C is in the minority.
- _qulr 6y ago> there's every indication that all new Apple frameworks are being written in Swift There's no such indication. "The number of binaries using Objective-C is still growing with each iOS release." https://blog.timac.org/2020/1019-evolution-of-the-programming-languages-from-iphone-os-to-ios-14/ https://blog.timac.org/2020/1019-evolution-of-the-programmin...
- mplewis 6y agoThe number of binaries of all languages in iOS (except C) increases year over year, so that doesn't really mean anything. It's more telling that the number of Swift binaries in proportion to the number of Objective-C binaries is increasing year over year.
- _qulr 6y ago> The number of binaries of _all languages_ in iOS increases year over year This is not true either. "the number of binaries written entirely in C is now stagnating" > the number of Swift binaries in proportion to the number of Objective-C binaries is increasing year over year This is true. But it's a much weaker claim than the one I was replying to. In other words, the reports of Objective-C's death have been greatly exaggerated. ;-)
- copascetic 6y agoIf you look closely at how that data was collected, what it's actually measuring is whether a binary links against the ObjC runtime library, which will be the case if a binary transitively depends on any ObjC framework, so even if all new frameworks and executables were written in Swift, we would still expect to see the number presented in that post to continue to grow until most or all of the important frameworks using ObjC are rewritten entirely in Swift. I don't think this data is sufficient to say one way or the other to what degree that is occurring.
- _qulr 6y agoFair criticism. I'm not sure why the author didn't try to detect the use of objc_msg functions, for example. So the ObjC binaries may be overcounted a bit. Still, the test for Swift binaries seems accurate, and if you look at iOS 13.1 vs 14.0, for example, according to the chart there was an increase of 157 Swift binaries and 446 Objective-C binaries. If we assume there are 157 "false positives" in the ObjC binaries, that's still an increase of 289 ObjC binaries that don't use Swift at all.
- rjmccall 6y agoSwift frameworks that use ObjC system libraries will still use objc_msgSend.
- _qulr 6y agoD'oh, right. A good test might be difficult. In the absence of that, I guess the safe bet is just to count every Swift binary as a false positive for ObjC, though that's not quite fair, since you can mix the two in the same code base.
- armadsen 6y agoWe'll see. Off the top of my head, only Combine and SwiftUI are Swift only for now. And Combine has specific features that are explicitly meant to make it interop with ObjC (and @objc Swift) objects, e.g. KeyValueObservingPublisher. The other "hot new" Apple frameworks, like CoreML, ARKit, HealthKit, ResearchKit, etc. are all still written in and usable from Objective-C. They _are_ starting to use Swift(UI) in UIKit, but so far continue to wrap it in an Objective-C interface.
- pjmlp 6y agoMetal is written in Objective-C and C++, with Swift bindings, it isn't going away.
- ckok 6y agoThe annoying thing is that all these new libraries can only be used from swift. As interop with swift is a pain from any other language.