I just came across an excellent article on setting up Xcode, and a generally mac environment to point at an SSHFS disk within a VMWare Fusion box. All this was to the end of using a nice interface to code against a nice clean unix platform, laudable goals indeed.
This works on the assumption that you want the target and the code to be stored on the VM. However, this is not always the case. I much prefer the vagrantvm approach, which is essentially the same thing, the other way around. In vagrant, the Mac’s file system is used to store the code, and the VM gets access to it through shared folders. The main advantage of the vagrant approach is that it’s just so easy to trash and restore your target virtual machine without losing your working copy.
Of course it does also arguably mean you’re not getting authentic file system behaviour and performance within your VM, but unless you’re doing very specific things, this is probably not going to matter very much to you, and certainly not as much as the fact that it’s a VM on your laptop of something in any case.