I agree with both of Jordan's comments: it's reasonable for this to fail, because the metadata for `Foo` needs to exist in the binary. It would also be wonderful to have a more specific error message when the process of constructing types from a mangled name fails.
Foundation framework is linked, but protocols code is generated on demand, and NSURLDownloadDelegate hasn't been requested properly. So it can't be found at runtime and the application crashes with segmentation fault.
Do you still find current behaviour completely reasonable?