Convert NIB Files to Objective-C Code
github.com
github.com
I'm sure it's a great tool though, clearly with so many apps out there, people are using it.
Now, if you wanted to argue that IB is bad because XIBs don't merge easily, I might agree with you[1]. Or even that nib loading is slow iOS 3.x[2]. It does make it slightly harder to use custom views, I suppose. But, a lot of the views I make are just existing views combined, not so much custom drawing[3]. And IB excels at that.
1. I'd actually say this is a failing of almost every VCS out there because it doesn't let you lock files. CVS is the only VCS that I know of that lets you do this.
// edit: As masklinn and shaggyfrog point out below, this isn't quite true. Centralized vcs's let you lock files, dvcs's don't. The point is that merge conflicts suck — and with xibs, can't be fixed..
2. UINib on iOS 4 makes nib loading much faster and much less of an issue.
3. Unless I need it to be very, very, very fast. But, I try to avoid this as it makes it harder to change the look around a month from now.
Most (if not all) centralized VCS have no issue with letting you lock files (for those where locking is not default or mandatory à la Perforce of course). SVN for instance lets you not only lock files [0] but mandate that files be locked before edition based on their filetype [1] which is usually set for binary and other non-mergeable files. DVCS do not allow for locking because the concept hardly makes sense in a distributed context, so you have to rely on a centralized third-party to manage locks in that context.
[0] http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.lock.html
[1] http://svnbook.red-bean.com/en/1.5/svn.advanced.locking.html...
I know that both Perforce and Subversion allow file locking.
File locking is typically popular in version control systems that have limited merge abilities. Perforce is a little better at resolving merge conflicts than the others mentioned here; locking tends to be limited to files that can't be merged, such as binaries.
You'll note I said it's a great tool in my first post.
Also, what happens if you set all your background colours to white in IB, and then the branding/design people come along and ask you to change to off-white?
In that case, its easy for marketing to do it themselves. IB is a UI, after all. You click on a field and select the new color from the wheel a bunch of times.
The alternative is that you go through code and manually paste it in yourself. And you can't `sed` it because not all backgroundColor properties belong to views that need changing (labels might be clear, some other view opaque, etc)
The tool exists though, so that Apple can bring more developers on board. Providing usable tools is not something I intend to complain about with respect to Apple.
People whine and moan about Xcode, but some of us started out writing this code in cygwin with an arm cross-compiler and deployed binaries via ssh... debugging tools included printf or forcing crashes. Fun times trying to guess at data structures and naked pointers, but I'm quite content with Xcode and gdb and graphical debuggers and whatever else Apple wants to provide for me :)
I like having everything represented in code, rather than spread across two different tools.
This NIB-to-code utility seems worthwhile.
if (english) { // 100 LOC } else if (german ) { // 100 LOC } else if (french) { // 100 LOC }
seriously? Might as well use the tools that Apple supports/uses instead of spending time and energy reinventing the wheel