Couldn’t agree more. I’ve always made the case that people should learn C as their first language, then take on an object-programming language beyond C (Objective-C, Java, etc.) That way, you’ll always know where C lets off and the object-superset of C begins. You’ll be able to write tight, performant C code as needed.
The question of whether to learn Objective-C and Swift is a bit different. Swift is a different language. Objective-C is a superset of C. Swift is not. That said, anyone developing for iOS or OS X will be working with a huge existing base of Objective-C code for a long, long time. Even if you are starting from scratch, there’s a wealth of how-to posts on the web dedicated to solving specific development problems. The vast majority of those are in Objective-C. The same is true for the sample code and reusable code posted in GitHub repositories and the like.
If you are a new developer, build a working knowledge of C, then Objective-C, then go out and master Swift. That’s my 2 cents.
UPDATE: I got a lot of pushback on learning C first. Some people think that C is dead. I disagree with that. There are APIs (and will be for some time) that require C (parts of Core Audio, Grand Central Dispatch, Core Graphics). So there’s that. There’s also the embedded space, which makes great use of C. There is also value in being able to move from iOS onto other platforms. Knowing C makes learning Java much easier.
That said, I do understand the logic in starting off with Swift as a first language, then taking on other languages as you need them. Nothing inherently wrong with that approach. As an example, I am starting my kids off with Arduino programming using C. They also understand binary, how masks work, and how pointers work. I think there’s real value in this nuts and bolts understanding of development. Again, my 2 cents, for a total of 4.