Search code examples
objective-ciosxcodecompiler-constructionllvm-clang

Compile time check for valid file references in Xcode


Is it possible to force the Xcode complier to verify that files referenced in code are valid?

There are multiple points in Cocoa development when you naturally reference a file programmatically via an NSString:

[UINib nibWithNibName:@"MyNib" bundle:nil];
[UIImage imageNamed:@"MyImage"];
[[UIViewController alloc] initWithNibName:@"MyNib" bundle:nil];

Is there any way at compile time to check is these file references are valid?

Often times after using above methods, I end up changing the name of the referenced file but forget to change the name in code. Everything complies without a problem and it is only when you happen to go to the portion of the app that accesses this file that the bug will reveal itself.

Is there another approach or technique that people use to avoid this sort of error?
Referencing a file name via a string feels very fragile.


Solution

  • AutoComplete for [UIImage imageNamed:] by Kent Sutherland.
    This provides code completion support within Xcode - a brilliant piece of code. This is working for me in Xcode 4.6: enter image description here

    Currently this project does not have support for strings other than imageNamed:. To support those, I will try to write a compile time script. Or maybe I will become bold and try to extend Mr. Sutherland's spectacular work.