I have been working on a Mac app off and on for a few months. I don't have any background in native programming though, as my experience has been pretty much completely from web engineering and javascript/Python.
My biggest issues have been 1) Lack of a development community and 2) Both too much documentation and not enough.
1) The Mac dev forums from Apple are almost dead. Asking a question on StackOverflow is a literal crapshoot as to whether you'll get an answer or not. I don't know where to begin looking for an active, vibrant Mac developer community.
2) Apple's documentation is simultaneously rich and deep while being incredibly sparse, inconsistent, and maze-like. Very frequently you can find a description on SO or a blog post referencing something you need, yet the link is broken because Apple is very bad about maintaining and forwarding links when they change their URL structure.
There are entire classes of questions that I don't even know how to research or ask about yet I know should have answers when I encounter them.
Not too long ago I was doing something with AVFoundation. There was a particular setting that I needed to change, and by looking at the signature of a similar feature that plugged in the same way I knew it should be there. But I couldn't find it. The docs in this feature said nothing about it. I searched high and low for 2 days for sample code or anything that implemented this thing. I was getting nowhere.
I finally went back and watched the original 2 WWDC videos where AVFoundation was being introduced in 2011. After 2 hours and literally in the last 2-3 minutes of the 2nd video, the speaker casually mentioned the feature I was working with. I about flipped my lid at that point.
The property was exactly where I expected it. Xcode wasn't autocompleting it for some reason and I think there was a camel-case issue that was making it fail. All in all it was extremely frustrating.
I'm being vague about the details because this all happened about a year ago and I haven't thought much about it.
If anyone knows if/how you can display a window in the app while recording the screen with AVFoundation and not record that window, you'd save me a ton of time and frustration. Otherwise I fear I have to stop using AVFoundation and do my own implementation which I think is a very bad idea.
If they sorted all that shit out (which i entirely agree with) they might even pull some enterprise customers in from the Microsoft direction as well. The Cocoa framework is pretty nice compared to MFC and comparable to WPF. We played with the idea of knocking out desktop integration on OS X for our product as there is a huge uptake of apple stuff in our sector. We canned it in the end and suggested parallels as there just weren't many good resources out there to get over the learning curve and you just can't get anyone in the UK who can do it.
Despite all their warts otherwise, Microsoft do a pretty good job of this via MSDN.
I've learned to directly look at header files with apple code now-a-days. And AVFoundation on iOS has a similar sparseness of documentation and community. Also when you actually work with the code, you find out it's extremely fragile.
This is why you want to be able to see source code in your libraries, you can solve these kinds of problems a lot better.
Comments
I have been working on a Mac app off and on for a few months. I don't have any background in native programming though, as my experience has been pretty much completely from web engineering and javascript/Python.
My biggest issues have been 1) Lack of a development community and 2) Both too much documentation and not enough.
1) The Mac dev forums from Apple are almost dead. Asking a question on StackOverflow is a literal crapshoot as to whether you'll get an answer or not. I don't know where to begin looking for an active, vibrant Mac developer community.
2) Apple's documentation is simultaneously rich and deep while being incredibly sparse, inconsistent, and maze-like. Very frequently you can find a description on SO or a blog post referencing something you need, yet the link is broken because Apple is very bad about maintaining and forwarding links when they change their URL structure.
There are entire classes of questions that I don't even know how to research or ask about yet I know should have answers when I encounter them.
Not too long ago I was doing something with AVFoundation. There was a particular setting that I needed to change, and by looking at the signature of a similar feature that plugged in the same way I knew it should be there. But I couldn't find it. The docs in this feature said nothing about it. I searched high and low for 2 days for sample code or anything that implemented this thing. I was getting nowhere.
I finally went back and watched the original 2 WWDC videos where AVFoundation was being introduced in 2011. After 2 hours and literally in the last 2-3 minutes of the 2nd video, the speaker casually mentioned the feature I was working with. I about flipped my lid at that point.
The property was exactly where I expected it. Xcode wasn't autocompleting it for some reason and I think there was a camel-case issue that was making it fail. All in all it was extremely frustrating.
I'm being vague about the details because this all happened about a year ago and I haven't thought much about it.
If anyone knows if/how you can display a window in the app while recording the screen with AVFoundation and not record that window, you'd save me a ton of time and frustration. Otherwise I fear I have to stop using AVFoundation and do my own implementation which I think is a very bad idea.
If they sorted all that shit out (which i entirely agree with) they might even pull some enterprise customers in from the Microsoft direction as well. The Cocoa framework is pretty nice compared to MFC and comparable to WPF. We played with the idea of knocking out desktop integration on OS X for our product as there is a huge uptake of apple stuff in our sector. We canned it in the end and suggested parallels as there just weren't many good resources out there to get over the learning curve and you just can't get anyone in the UK who can do it.
Despite all their warts otherwise, Microsoft do a pretty good job of this via MSDN.
I've learned to directly look at header files with apple code now-a-days. And AVFoundation on iOS has a similar sparseness of documentation and community. Also when you actually work with the code, you find out it's extremely fragile.
This is why you want to be able to see source code in your libraries, you can solve these kinds of problems a lot better.
This is a good tip that I do more and more.
The OS X dev community is much smaller than the iOS community. For questions like those above, I'd suggest the cocoa-dev mailing list:
https://lists.apple.com/mailman/listinfo/cocoa-dev
AVFoundation for the records is available for both iOS and Mac OS X