F-Script is an amazingly useful tool for answering quick API
questions, like “What happens if I pass in nil
“. I use it several times a week. For verifying corner-cases, F-Script is faster than google, stackoverflow, or reading header files. Just type in a questionable expression and instantly see what happens.
There’s a good tutorial to get you started quickly. I’m not going to reproduce it here, so if any of these examples aren’t clear, go read it.
Example: NSMutableArray
Objective-C had historically poor support for exceptions, and the Foundation/Cocoa libraries are pretty inconsistent about using them. For example, trying to add nil
to an array throws an exception, but trying to remove nil
from an array has no effect. Here’s how I used F-Script to verify that,
> a := NSMutableArray array
> a addObject:nil
NSInvalidArgumentException: *** -[NSCFArray insertObject:atIndex:]: attempt to insert nil
> a addObject:'foo'
> a
NSCFArray {'foo'}
> a removeObject:nil
> a
NSCFArray {'foo'}
If you’re not impressed, I understand. Static text really can’t convey the power of an interactive console. Sure, the F-Script syntax is marginally more concise than writing the equivalent code in Objective-C, but not enough that it matters. What matters is the interactivity, I got my answer as soon as I hit return. No waiting on the compiler. No switching between the program and Xcode. Immediate feedback.
You might prefer to use python as a Cocoa console. That’s cool! I prefer F-Script because it’s closer to Objective-C, but any tool with a REPL console works. If you have a favorite, please leave a comment!
REPL consoles for exploring Objective-C on a Mac: