To maybe clarify that question a little, how many NS objects, or what portion of the core frameworks does a typical proficient Apple programmer know? Do they go about mastery for the entire library, or just search through for parts that they think they would like to use on their application?
I'm fairly new to Apple programming, but spent years working with the Microsoft Foundation Class (C++) and Java's Swing classes. I learned many of the "basic" objects that one frequently uses (menus, windows, buttons, text fields, etc.) and with time I'd learn "deeper" topics as needed (like Swing's and MFC's tables).
Only learn what you need to. Larry Wall says the three chief virtues of a programmer are: Laziness, Impatience and Hubris. That means you do as little as you can to accomplish what you need. Always choose the fastest path to getting something working. Don't worry about mastering it all. Just have confidence that you can figure it out.
Also, Core Foundation is a C language interface. You would have to have very specific needs to use that directly. Almost everything you need is in Cocoa. If you are spending time coding something in Core Foundation when you don't need to, then you are lacking two out of three virtues of a programmer.
Thank you for the replies!
I was really shocked to see the Cocoa environment. I still have only glanced at it, but I get the idea that it creates a 'build' environment for applications, much like 'motion' does for graphics.
Immediately, I have the need for my application development, to connect copy-and-past functions, data translation functions, data base to graphics functions, unusual user interface graphics, and similar innovations.
I see that with Soundtrack pro, it looks like a number of different 'mini' applications were created to work with the same data in different ways, and with different user interfaces. It looks like the best of these were then gathered into a master application. That seems to be a good way to go with innovative application needs, to build the parts to interract with the same data foundation, then put them together later.
With that in mind, I can apply your programming principles, and use the Cocoa database to design the basic data blocks and the ways to work with them in a more direct, but clumsier fashion. Later I can develop that interface environment in pieces and assemble them, that will really make the platform fly.
Ok, I see I just have to develop my own development style, more or less, to fit my needs. Cocoa may or may not be the best option for some of the development. Thanks again for the feedback, it's very helpful to know that a good approach is to use only what I need apart from a basic understanding of some of the basics.
That settles my mind on getting deeper into this project without thinking I have to develop some sort of mastery over all the details of all the tools available, and gives me reason to get more into this project immediately, without fear of lacking a sensible plan for development.
So that's amazing how quickly you can learn C++,etc, with the xcode editor/compiler/debugger. That is really amazing. What are the people who designed this stuff doing, sitting aroung in Tahiti enjoying Mai Tais and enjoying watching us all discover this stuff? They should be! The editor walks you through discovery of all the available functions and their parameters as you type. It's really amazing. I know there are people I think I can help because of being a little smarter, or a little more able, but dealing with Apple makes it clear that there are plenty of people able to help me, as well.