| Code by Kevin | |||||
|
Subscribe to RSS Feed 2012 2011 2010 2009 2008 2007 2006 Categories Business Software General |
home
Thu, 03 Feb 2011 I've posted an article at my website that offers an overview of the process of submitting a Tcl/Tk application to the App Store, and also delves into some of the technical issues particular to Tk-Cocoa applications. I'd like to elaborate a bit here on those technical issues. One reason NameFind was initially rejected was that, at a deep level, Tk-Cocoa accesses private Cocoa code, and this runs afoul of the App Store guidelines: no private frameworks, variables, or methods/functions can be invoked by an application. "Private" means code that is internal to the Cocoa frameworks and not exposed via documented programming interfaces (API's). Because of differences between Tk's design and Cocoa, however, it was necessary for the designers of Tk-Cocoa to hook into those private API's to ensure smooth integration between the two. Since there is no way to remove the private API's from Tk-Cocoa, how was I able to work around the prohibition against accessing them? The answer is surprisingly simple: I linked my code to the Tk-Cocoa frameworks installed with OS X, instead of bundling those frameworks with my app. The system-installed frameworks are exempt from the requirements, because they are installed by Apple. This linking has come at some cost, however. The version of Tk-Cocoa that ships with Snow Leopard is very immature; it was the first public release of Tk-Cocoa, and it has a number of bugs and rough-around-the-edges bits that were later fixed and improved. Linking to this version of the framework is taking a step back in terms of performance and polish. Fortunately, there are ways to address these issues that don't compromise the polish of my applications too much. I no long have access to native, modern Cocoa notebook tabs (the older version of Tk-Cocoa uses ancient tabs that Apple stopped using in Panther, or OS X 10.3, seven years ago), but I've been able to create an attractive if unorthodox design using a different Tk widget set called BWidgets. There are certain bugs with the application menu that I can't quite figure out how to fix, but (ironically) using an older approach to setting up my menus (calling the "apple" menu) works around the problem. And, best of all, the various library extensions I've created continue to work with no problem at all. NameFind is off to a decent start with sales, and I'm already looking at some improvements based on user feedback and the changes I'm making to the next app I plan to submit to the App Store--QuickWho. Stay tuned. |
||||