How to stop AppKiDo 0.983 from crashing on launch

If AppKiDo 0.983 is crashing on launch, try going into Xcode and updating the Leopard Core Library docset. If it's the same problem a couple of people have reported, the crashing should go away. If you're not sure how to update the docset, see my next post.

(Note this is not a problem for AppKiDo-for-iPhone, so if that's crashing for you please let me know.)

Here's what was causing the crash. During startup, AppKiDo reads a property called "DocSetPlatformVersion" from a plist file in the Cocoa docset bundle. There was at least one version of the docs where that value was missing from the plist, and since I don't check for this, I ended up trying to insert nil into an array. Updating your docs gets rid of the crash by fixing the plist.

Yeah, I shouldn't be hacking around in undocumented plists (setting aside the more grievous error of not checking for nil), but the fact is that AppKiDo relies almost totally on undocumented file, directory, and database structures. There are ways I can reduce this dependency (especially when I get around to requiring Xcode 3 as a minimum), but I don't see the hackishness going completely away any time soon.

At some point I'll release an update to handle situations like this more gracefully.

Thanks to Chris Backas for helping to track this down.

Crashing bug in 0.983

I should probably have released one more sneakypeek before pushing 0.983. I've gotten a couple of reports of a crash on launch. Haven't found the problem yet, but it's totally reproducible, the stack traces look the same, and it's almost certainly a dumb error I could have caught by programming more defensively. On my list for the next minor release: more robust and informative error handling.

(The next major release, where I get rid of the long launch, is still a long ways away.)

UPDATE: Found it.

AppKiDo 0.983 works with Snow Leopard

Yeah, it would have been better to release this in time for folks to use it with Snow Leopard seeds.

  • Works with the Xcode 3.2 docs (i.e., Snow Leopard).
  • Added NSDate to the "Strings, data, collections" quicklist.
  • If you switch to a different app while AppKiDo is loading, you won't get AppKiDo windows popping up in front when it's done loading.
  • Changed to look for docs in the right place when the Dev Tools version is 2.5 and the Dev Tools directory is not /Developer.
  • Added a popup button in prefs so you can choose between iPhone SDKs if you have more than one installed.
  • Fixed bug where links to http: pages (like the sample code links in +stringWithString:) weren't going anywhere.
  • Fixed bug causing DOM classes to show up as root classes.
  • When you do a search, jumps to the first search result that has the search string as a prefix, if there is one.
  • Staggers placement of new windows.

UPDATE: Corrected the link for downloading the source.

AppKiDo 0.982 is out

I hurriedly posted download links on cocoa-dev three days ago. Today I updated the web site.

Release notes:

  • This is a bug-fix release, not the faster-loading version I promised earlier (that version will be 0.99).
  • Now that the iPhone NDA has been lifted, AppKiDo-for-iPhone is available. It is a separate app with a very slightly different icon. Also, the AppKiDo source code is again available. I don't think it contains anything all that secret, but I wanted to be on the safe side.
  • Added nil checks to prevent some of the crashes that were reported in 0.981.
  • Some docs weren't showing up — for example, NSIndexPath UIKit Additions and UITextField's delegate methods.
  • The "Classes with delegates" quicklist was missing classes that have a delegate property as opposed to an explicit setDelegate: method.
  • Fixed the Spaces bug where a new window would be created every time you switch to the space containing AppKiDo.
  • Known issue: a few deprecated methods show up in "Delegate Methods" section — for example, [NSData deserializeAlignedBytesLengthAtCursor:].